选择排序是双for循环的 你选择排序写的有问题。
可以参考正文下方的博客。
#include "stdio.h"
void main()
{
int a[10]={88,1,99,-10,1000,87,65,91,101,200};
int i,j,temp,index,k;
//排序之前:
printf("排序之前:\n\t\t\t\t");
for(k=0;k<10;k++)
printf("%d,",a[k]);
printf("\n");
//---------------------------------
for(i=0;i<9;i++){
temp=a[i];
index=i;
for(j=i+1;j<10;j++){
if(temp>a[j]){
temp=a[j];
index=j;
}
}
//交换
a[index]=a[i];
a[i]=temp;
}
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
# include <stdio.h>
int main(void){
int i, j; //循环变量int MinIndex; //保存最小的值的下标int buf; //互换数据时的临时变量
int a[] = {5, 5, 3, 7, 4, 2, 5, 4, 9, 1, 8, 6};
int n = sizeof(a) / sizeof(a[0]); //存放数组a中元素的个数for (i=0; i<n-1; ++i) //n个数比较n-1轮{MinIndex = i;for (j=i+1; j<n; ++j) //每轮比较n-1-i次, 找本轮最小数的下标{if (a[MinIndex] > a[j]){MinIndex = j; //保存小的数的下标}}if (MinIndex != i) /*找到最小数之后如果它的下标不是i则说明它不在最左边, 则互换位置*/{buf = a[MinIndex];a[MinIndex] = a[i];a[i] = buf;}}printf("最终排序结果为:\n");for (i=0; i<12; ++i){printf("%d ", a[i]);}printf("\n");return 0;}
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632