gpt4 book ai didi

c++ - 动态确定大小数组的冒泡排序方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:54:58 24 4
gpt4 key购买 nike

我正在尝试对具有动态确定大小的数组使用冒泡排序方法。这是代码:

#include <iostream>

using namespace std;

int main()
{
int n;
cout<<"Enter n";
cin>>n;
int arr[n],swap;
cout<<"Enter number"<<endl;
cin>>arr[n];
for(int i=0;i<n-1;i++)
for(int j=0;i<n-i-1;j++)
if(arr[j]>arr[j+1])
{
swap=arr[j];
arr[j]=arr[j+1];
arr[j+1]=swap;
}
for(int k=0;k<n;k++)
cout<<"arr["<<k<<"]="<<arr[k]<<endl;
return 0;
}

当我以这种方式定义数组的元素时,程序运行:

const n=5;
int arr[n]={1,2,3,4,5)

但我需要从键盘输入数组的大小 (n) 及其元素。但是当我运行我的代码时,程序在我输入第一个数字后崩溃了。有办法解决吗?

最佳答案

#include <iostream>
#include <vector>

using namespace std;

int main()
{
int n, swap, temp;
vector<int> arr;
cout<<"Enter n";
cin>>n;

// Loop and accept the n values.
// You may need to take care of the new line.
for(int i = 0; i < n; ++i)
{
cout << "Enter a number : ";
cin >> temp;
arr.push_back(temp);
}

for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
if(arr[j]>arr[j+1])
{
swap=arr[j];
arr[j]=arr[j+1];
arr[j+1]=swap;
}
for(int k=0;k<n;k++)
cout<<"arr["<<k<<"]="<<arr[k]<<endl;
return 0;
}

注意如何使用循环来提取 n来自用户的值(value)。同时使用 std::vector使您免于使用 new 为运行时大小的数组编写代码和 delete .

此外,您的内部循环正在检查 i<n-i-1并递增 j应该是 j<n-i-1相反,否则 j将无限增加直到 INT_MAX .

关于c++ - 动态确定大小数组的冒泡排序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com