在 C 语言中,为什么我的选择排序代码不起作用
In C language why my selection-sort code doesn't work
我写了一个选择排序算法但是没有用。我找不到我的错。谁能帮帮我?
#include
int main () {
int array[100],i,j,position,size,swap;
printf("Enter number of integers\n");
scanf("%d",&size);
printf("Enter %d integers\n",size);
for(i=0;i<size;i++){
scanf("%d",&array[i]);
}
for(i=0;i<size;i++){
position=i;
for(j=i;j<size;j++){
if(array[position]>array[j]){
position=j;
}
if(position!=i){
swap=array[i];
array[i]=array[position];
array[position]=swap;
}
}
}
printf("Sorted list in ascending order\n");
for(i=0;i<size;i++){
printf("%d\n",array[i]);
}
return 0;
}
选择排序算法通过从未排序的部分中反复查找最小元素(考虑升序)并将其放在开头来对数组进行排序。
所以交换需要在您找到正确的位置后发生,即在您的 for 循环结束后发生。所以如果你在 j 循环结束后切换 if 块,代码应该可以工作。
for(i=0;i<size;i++){
position=i;
for(j=i;j<size;j++){
if(array[position]>array[j]){
position=j;
}
}
if(position!=i){
swap=array[i];
array[i]=array[position];
array[position]=swap;
}
}
我写了一个选择排序算法但是没有用。我找不到我的错。谁能帮帮我?
#include
int main () {
int array[100],i,j,position,size,swap;
printf("Enter number of integers\n");
scanf("%d",&size);
printf("Enter %d integers\n",size);
for(i=0;i<size;i++){
scanf("%d",&array[i]);
}
for(i=0;i<size;i++){
position=i;
for(j=i;j<size;j++){
if(array[position]>array[j]){
position=j;
}
if(position!=i){
swap=array[i];
array[i]=array[position];
array[position]=swap;
}
}
}
printf("Sorted list in ascending order\n");
for(i=0;i<size;i++){
printf("%d\n",array[i]);
}
return 0;
}
选择排序算法通过从未排序的部分中反复查找最小元素(考虑升序)并将其放在开头来对数组进行排序。
所以交换需要在您找到正确的位置后发生,即在您的 for 循环结束后发生。所以如果你在 j 循环结束后切换 if 块,代码应该可以工作。
for(i=0;i<size;i++){
position=i;
for(j=i;j<size;j++){
if(array[position]>array[j]){
position=j;
}
}
if(position!=i){
swap=array[i];
array[i]=array[position];
array[position]=swap;
}
}