void sort(int values[], int n)
{
int smallestSpot = 0;
for (long long i = 0; i < n ; i++)
{
int smallest = values[i];
for(long long j = i; j < n - i ; j++) //find the smallest int in array
{
if(values[j] < smallest)
{
smallestSpot = j;
smallest = values[j];
}
}
values[smallestSpot] = values[i];
values[i] = smallest;
}
return;
}
我的排序算法会覆盖第一个数字,我找不到原因,请帮忙。谢谢。
答案 0 :(得分:4)
感谢COLDSPEED和GAURANG VYAS执行的更改,我们可以使用代码的工作版本。
#include<stdio.h>
void
sort(int values[], int n)
{
int smallestSpot = 0;
for (long long i = 0; i < n ; i++){
int smallest = values[i];
smallestSpot = i;
for(long long j = i+1; j < n ; j++){ //find the smallest int in array
if(values[j] < smallest){
smallestSpot = j;
smallest = values[j];
}
}
values[smallestSpot] = values[i];
values[i] = smallest;
}
}
int main()
{
int arr[5] = {1,2,8,9,10};
sort(arr,5);
for(int i=0;i<5;i++){
printf("%d\n",arr[i]);
}
return 0;
}
在尝试使用笔和纸进行编码跟踪算法之前。 我们有很多排序算法,我建议看this链接并获得有关排序问题的视觉理解和解决问题的方法。