八大排序演算法 —— 簡單選擇排序
阿新 • • 發佈:2019-02-06
簡單插入排序
核心思想:簡單選擇排序就是從待排的元素中選擇最小的元素,凡在已排元素的後面,依次迴圈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;
}
}