У меня есть простая программа сортировки, скомпилированная Dev-C++ 4.9.8.0. Я запустил программу (да, это компилирует), и она просто останавливает после того, как отображает линию, в которой вектор отображается в первый раз. Примечание - он не замерзает, кажется, что он просто делает паузу. В коде сортировка выбора происходит следующим образом, поэтому я предполагаю, что там происходит ошибка, но для меня нет сообщения об ошибке, чтобы даже выяснить, что делать!Почему моя программа приостанавливается после выбора функции сортировки?
#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;
}
Возможно, установите 'n' в * something * в' selectionSort'. Сейчас это неопределенно, но вы зацикливаетесь на нем. 'data.size()' кажется достойным кандидатом. – WhozCraig
@WhozCraig Но эта функция запускается ** после ** пользователь уже ввел значение n (cin >> n). Поэтому не следует ли просто использовать эту ценность? – Aaron
'' '' '' '' '' '' '' '' '' '' '' '' '' на '' '' '' '' '' '' '' ', который никогда не передается функции. Это разные автоматические переменные. – WhozCraig