选择法排序,哪个地方学错了?

 

选择排序是双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