排序程序不工作,不知道为什么
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 并直观地了解排序问题及其解决方法。
编辑
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 并直观地了解排序问题及其解决方法。
编辑