选择排序
与数组联系
简介
选择排序( Selection sort)是一种简单直观的排序算法。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序算法通过选择和交换来实现排序,其排序流程如下:
-
(1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。
-
(2)接着从剩下的n-1个数据中选择次小的1个元素,将其和第2个位置的数据交换
-
(3)然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序。
void selecetionsort (int a[],int size) { for (int i=0;i<size-1;++i) //每次循环后将第i小的元素放好 { int tmpmin=i; //用来记录从第i个到第size-1个元素中,最小的那个元素的下标 for(int j=i+1;j<size;++j) { if(a[j]<a[tmpmin]) tmpmin=j; } //下面将第i小的元素放在第i个位置上,并将原来占着第i个位置的元素挪到后面 int tmp=a[i]; a[i]=a[tmpmin]; a[tmpmin]=tmp; } }
算法的效率
程序中被执行最多次的语句是if中的比较语句,被执行了size(size-1)/2次。它的数量级为size^2.