选择排序(Selection sort)是一种简单直观的排序算法。这次我们依然将其分为有序组与无序组。
(推荐其他两种排序算法
冒泡排序:http://blog.csdn.net/llzk_/article/details/51547923
插入排序:http://blog.csdn.net/llzk_/article/details/51628574
)
它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
- #include<stdio.h>
- void SelectionSort(int *num,int n)
- {
- int i = 0;
- int min = 0;
- int j = 0;
- int tmp = 0;
- for(i = 0;i < n-1;i++)
- {
- min = i;
- for(j = i;j < n;j++)
- {
- if(num[min]>num[j]) //判断是否为最小元素
- {
- min = j; //min指向比较小的num[j]的下标j
- }
- }
- if(min != i)
- {
- tmp = num[min];
- num[min] = num[i];
- num[i] = tmp;
- }
- }
- }
-
- int main()
- {
- int num[6] = {5,4,3,2,9,1};
- int i = 0;
- SelectionSort(num,6);
- for(i = 0;i < 6;i++)
- {
- printf("%d ",num[i]);
- }
- return 0;
- }