简单选择排序

1.排序原理

简单选择排序算法原理:每次从左至右扫描序列,记下最小值的位置。然后将最小值与当前位置的值交换

<mark>排序过程</mark>

序列:[5 4 3 2 1] 从小到大排列
第一轮:[(5) 4 3 2 1] 
	当前位置:[5]   [4,3,2,1]中查找比[5]小的最小值[1]
	交换位置得:[1,4,3,2,5]
第二轮:[1,(4),3,2,5]
	当前位置:[4]   [3,2,5]中查找比[4]小的最小值[2]
	交换位置得:[1,2,3,4,5]
第三轮:[1,2,(3),4,5]
	当前位置:[3]   [4,5]中查找比[3]小的最小值-- 
	排序结束

<mark>图示</mark>

2.源代码:

#include<stdio.h>
#define N 10
void SelectSort(int num[],int len)
{
	int i,j,k,temp;
	for(i=0;i<len;i++)
	{
		k=i;//记录位置
		for(j=i+1;j<len;j++)//查找后面的最小值
			if(num[k]>num[j])
				k=j;//记录位置
		if(k!=i)//交换位置
		{
			temp=num[i];
			num[i]=num[k];
			num[k]=temp;
		}
	}
}

int main()
{
	int num[N]={9,8,7,6,5,4,3,2,1,0};
	SelectSort(num,N);
	for(int i=0;i<N;i++)
		printf("%d ",num[i]);
	printf("\n");
	return 0;
}