选择排序(Selectionsort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
代码部分
#include<stdio.h>
#define N 5//定义N 的值
int main()
{
int arr[N],i,j,k,temp;
for(i=0;i<N;i++)//遍历输入
scanf("%d",&arr[i]);
for(i=0;i<N;i++)
{
k=i;//k标记最小值的位置
for(j=i;j<N;j++)//这个循环只是用来标记最小值而已
{
if(arr[k]>arr[j])//大于就更新标记
k=j;
}
if(i!=k)//判断标记是否更新,更新了就交换值
{
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
for(i=0;i<N;i++)//遍历输出打印
printf("%d\t",arr[i]);
return 0;
}
运行结果
个人体会
选择排序的要点在于比较完成后,直接将目标数交换到指定位置,因此使用一个变量标记最小值,比较完成后对应的就是本次遍历中的最小值,交换到指定位置值即可。思路捋一遍,弄清楚过程,然后编写就比较容易。