我已经编写了这个函数来对整数数组进行排序,这里的标志是指示是按升序还是降序对数组进行排序,size是数组的大小。你能告诉我我写错了什么,我也检查了算法。
void sortArray(int a[], int flag, int size) {
int temp, index;
int start = 0;
int smallest = start;
if (flag) {
while (start < size) {
index = start;
while (index < size) {
if(a[index] < a[smallest]) {
smallest = index;
}
index++;
}
temp = a[smallest];
a[smallest] = a[start];
a[start] = temp;
start++;
}
}
else{
while (start < size) {
index = start;
while (index < size) {
if(a[index] > a[smallest]) {
smallest = index;
}
index++;
}
temp = a[smallest];
a[smallest] = a[start];
a[start] = temp;
start++;
}
}
}
答案 0 :(得分:0)
在第二个while循环之前添加smallest = index;
,就像这样
if (flag) {
while (start < size) {
index = start;
smallest = index;
while (index < size) {
if(a[index] < a[smallest]) {
smallest = index;
}
index++;
}
temp = a[smallest];
a[smallest] = a[start];
a[start] = temp;
start++;
}
}
如果没有这个添加,你的循环会不断检查已经排序的元素,这会弄乱算法