1. 程式人生 > >八大排序演算法 —— 簡單選擇排序

八大排序演算法 —— 簡單選擇排序

簡單插入排序

核心思想:簡單選擇排序就是從待排的元素中選擇最小的元素,凡在已排元素的後面,依次迴圈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; } }