C语言,选择法进行降序排序。我写的选择排序程序如下,但运行之后还是原来数组的顺序 请大神指教

2024-12-29 13:57:04
推荐回答(2个)
回答1:

有两处错误:

1:s[i]-->s[max] 

2:第二段代码,应该是在第二重循环执行完之后。 

不理解可以追问

回答2:

void sort(int length,int *data)
{
int *s=data;
int i,j,k,max,temp;
for(i=0;i {
max=i;
for(k=i+1;k {
if(s[max]    max=k;//max是存储数值最大的元素的下标


}
if(max!=i)
{
               temp=s[max];//以下三行是将是将是s[i+1]~s[j]中最大元素与s[i]交换
   s[max]=s[i];
   s[i]=temp;
}

}
for(i=0;i printf("%d\n",s[i]);
}

}
这样就对了,把 if(max!=i)
{
               temp=s[max];//以下三行是将是将是s[i+1]~s[j]中最大元素与s[i]交换
   s[max]=s[i];
   s[i]=temp;
}

这段代码拿到k循环外才对