zl程序教程

您现在的位置是:首页 >  后端

当前栏目

排序算法之选择排序【C语言】

2023-09-11 14:18:53 时间
#include<stdio.h>
#define N 5						//宏定义需要排列的数组的个数 
int main(void){
	int i,j,x,t,min;			//min临时存储最小值 
	int a[N];
	printf("please enter %d numbers:\n",N);
	for(i=0;i<N;i++)
	scanf("%d",&a[i]);
	//选择法排序 
	for(j=0;j<N;j++){			//外层循环 
		min=a[j];				//先设数列第j号为最小值,方便下列替换 
		for(i=j+1;i<N;i++){		//取出本次循环中的最小数 
			if(min>a[i]){	
				t=a[i];
				a[i]=min;
				min=t;
			}
		}
		a[j]=min;				//将取出的最小数放在数列第J号 
	}
	for(i=0;i<N;i++)			//排序输出部分 
	printf("%d,",a[i]);
	return 0;
} 

选择排序的思想就是每次从剩下的数中选一个最大/最小的数,排在剩下的数中的最后或者/最前,

比如对6 ,5 ,3 ,9进行选择排序,第一轮先找出这个4个数中的最小值(为3),放在最后一个位置(即和9交换位置);然后从剩下的3个数中(6 ,5 ,9)中找一个最小的(为5),放在倒数第二个,以此类推。最后就会得到排好序的:9 6 5 3.