简单选择排序
核心思想:简单选择排序就是从待排的元素中选择最小的元素,凡在已排元素的后面,依次循环n次,实现排序。
算法实现过程:
初始关键字:『 8,5,2,6,9,3,1,4,0,7 』
第一趟排序后:0,『5,2,6,9,3,1,4,8,7』
第二趟排序后:0,1,『2,6,9,3,1,4,8,7』
第三趟排序后:0,1,2,『6,9,3,5,4,8,7』
第四趟排序后:0,1,2,3,『9,6,5,4,8,7』
第五趟排序后:0,1,2,3,4,『6,5,9,8,7』
第六趟排序后:0,1,2,3,4,5,『6,9,8,7』
第七趟排序后:0,1,2,3,4,5,6,『9,8,7』
第八趟排序后:0,1,2,3,4,5,6,7,『8,9』
第九趟排序后:0,1,2,3,4,5,6,7,8,『9』
结果: 『 0,1,2,3,4,5,6,7,8,9 』
简单选择排序的时间复杂度是O(n2),空间复杂度是O(1),由于在每次选择最小的元素时,会替换部分元素的位置,可能导致相同大小的不同元素的前后位置颠倒,所以简单选择排序是一种不稳定的排序方法。
算法代码实现 :
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int []data = new int[8];
for(int i= 0;i<data.length ;i++){
data[i] = sc.nextInt();
}
//简单选择排序
simpleSelectionSort(data);
for(int i = 0;i<data.length ;i++){
System.out.print(data[i]+" ");
}
}
//简单选择排序
public static int[] simpleSelectionSort(int[] data){
int minIndex;
for(int i =0;i<data.length-1;i++){
minIndex = i;
for(int j = i+1 ;j<data.length;j++){
if(data[j]<data[minIndex]){
minIndex = j;
}
}
int tmp = data[i];
data[i] = data[minIndex];
data[minIndex] =tmp;
}
return data;
}
}