为什么这个选择排序程序我写的不工作
它不对数组进行排序。我做错了什么?
//This program uses selection sort algorithm to sort an array
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void main() {
int arr[10], i, j, small, pos, a;
printf("SELECTION SORT\n");
srand(time(NULL));
i = 0;
while (i < 10) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
i++;
}
j = 0;
while (j < 10){
i = j;
small = arr[j];
while (i < 10) {
if (arr[i] < small) {
small = arr[i];
pos = i;
}
i++;
}
a = arr[pos];
arr[pos] = arr[j];
arr[j] = a;
j++;
}
printf("\nThe array has been sorted\n");
i = -1;
while (++i < 10)
printf("%d ", arr[i]);
getch();
}
找到最小元素的算法部分有效 外环是我认为我犯了一个错误,但我无法弄清楚是什么 一点建议将不胜感激 感谢
答案 0 :(得分:0)
您需要对代码进行非常小的更改才能使其正常工作
...
while(j<10)
{
i=j+1; // change i=j to i=j+1
small=arr[j];
while(i<10)
{
...
}
if (small!=arr[j])
{
a=arr[pos];
arr[pos]=arr[j];
arr[j]=a;
}
j++;
...
你能看出为什么需要这种改变吗?