gpt4 book ai didi

c++ - 为什么我的程序在选择排序功能后暂停?

转载 作者:行者123 更新时间:2023-11-28 06:17:33 25 4
gpt4 key购买 nike

我有一个由 Dev-C++ 4.9.8.0 编译的简单排序程序。我运行了这个程序(是的,这个编译)并且它只是在之后显示了第一次显示 vector 的行。注意 - 它不会卡住,它似乎只是暂停一下。在代码中,选择排序紧随其后,所以我假设错误发生在那里,但没有错误消息让我什至弄清楚该怎么做!

#include <iostream>
#include <stdlib.h>
#include <vector>
#include <cmath>
#include <ctime>

using namespace std;

void bubbleSort (vector<int>& data)
{
if(data.size() <= 1)
return;

int flag=1;
int temp;

for(int i=1; (i<=data.size()) && flag; i++)
{
flag=0;
for(int j=0; (j<data.size()-1); j++)
{
if(data[j+1] > data[j])
{
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
flag=1;
}
}
}
}

void selectionSort(vector<int>& data)
{
int min, temp, n=data.size();

for (int i=0; i<n; i++)
{
min = i;

for (int j=i+1; j<n; j++)
{
if (j<min)
{
temp=i;
i=min;
min=temp;
}

}
}
}

int main()
{
int n;
vector<int> data;

cout<<"Vector length?: "<<endl;
cin>>n;

srand(time(0));
for (int i=0; i<n; i++)
{
data.push_back(rand()%20+1);
}

cout<<"Vector: ";
for (int i=0; i<data.size(); i++)
{
cout<<data[i]<<", ";
}

selectionSort(data);

cout<<"Sorted Vector: ";
for (int i=0; i<data.size(); i++)
{
cout<<data[i]<<", ";
}

system("Pause");

return 0;




}

最佳答案

selectionSort() 方法有变量“n”,它完全是一个随机值,恰好在堆栈上的那个位置。你还没有初始化它!

你有一个嵌套循环,它是 O(n^2)。假设 n 是 1982734 或任意大的数字。您只是循环了 1982734 * 1982734 次。最终它会完成。为什么不在 selectionSort() 中打印 'n' 的值。只需使用 vector 的大小对其进行初始化即可。

正如其他人评论的那样,整个工作正在进行中。

关于c++ - 为什么我的程序在选择排序功能后暂停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957076/

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