简单选择排序
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;
}