选择排序是一种简单直观的排序算法,其基本原理如下:
1、对于给定的一组记录,经过第一轮比较后得到最小的记录,然后在该记录与第一个记录的位置进行比较;
2、接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换;
3、重复该过程,直到进行比较的记录只有一个时为止。
以数组{38,65,97,76,13,27,49}为例,选择排序的具体步骤如下:
第一趟排序后:13【65,97,76,38,27,49】
第二趟排序后:13,27【97,76,38,65,49】
第三趟排序后:13,27,38【76,97,65,49】
第四汤排序后:13,27,38,49【97,65,76】
第五趟排序后:13,27,38,49,65【97,76】
第六趟排序后:13,27,38,49,65,76【97】
第七趟排序后:13,27,38,49,65,76,97
程序代码如下所示:
public class Sort {
/**
* 简单选择排序
* @param a排序的数组
*/
public static void selectSort(int[] a){
for(int i=0;i
a[j])
min=j;
}
if(i!=min){
int temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
}
public static void main(String[] args) {
int[] a={1,2,3,5,3,5,3,9};
selectSort(a);
for(int i=0;i
现在对简单选择排序进行复杂度分析:
最好时间:O(n^2)
平均时间:O(n^2)
最坏时间:O(n^2)
辅助存储:O(1)
稳定性:不稳定
备注:n较小的时候好