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

Sort program not working, not sure why

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

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

感谢 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(void){
 
    int arr[5] = {8,1,9,10,2};
    sort(arr,5);
    for(int i=0;i<5;i++){
        printf("%d\n",arr[i]);
    }
 
    return 0;   
}

在尝试编写代码之前,请用笔和纸跟踪您的算法。 我们有很多排序算法,我建议查看 this link 并直观地了解排序问题及其解决方法。

编辑