排序程序不工作,不知道为什么

时间:2017-07-09 18:56:28

标签: c cs50

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;
}

我的排序算法会覆盖第一个数字,我找不到原因,请帮忙。谢谢。

1 个答案:

答案 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链接并获得有关排序问题的视觉理解和解决问题的方法。