七大排序之選擇排序

2021-10-04 07:21:37 字數 1143 閱讀 6436

剛開始整個陣列是無序區間,在無序區間找到最大的元素,將最大元素放在陣列的最後,第二次在無序區間查詢最大元素,找到最大的,放入陣列的倒數第二個,依此類推;或者是在無序區間找最小元素,將最小元素放在陣列開始,第二次在無序區間找的最小元素放在第二位置,依此類推

//最大元素放在最末尾

public

void

selectsort

(int

arr)

}swap

(arr,max,arr.length-i-1)

;}}private

void

swap

(int

arr,

int max,

int i)

//最小的放最前面

public

static

void

selectsort1

(int

arr)

}swap

(arr,min,i);}

}private

void

swap

(int

arr,

int max,

int i)

//將無序區間最大的元素放在最尾,最小的元素放在最開始,是以上兩種的結合

不穩定,當存在重複元素時,會先將第乙個元素放到後面,再將重複的第二個元素放到倒數第二,不能保證穩定性

如下圖,交換前紅色的 4 在前,藍色在後,交換後,藍色在前,紅色在後

七大排序演算法之選擇排序

和氣泡排序一樣,這個也是簡單而必須掌握的基礎排序演算法。遍歷陣列每個元素,若為公升序,則尋找最小的數與第乙個數交換,一趟排序結束後,最小的數字於陣列第乙個位置,然後在2 n個數中,尋找最小的元素放在第二個位置,往復下去,排序結束。固定 n n public class selectsort syst...

七大排序之希爾排序

希爾排序的實質就是分組插入排序,該方法又稱 縮小增量排序 因dl shell於1959年提出而得名。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素 組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素...

七大排序之堆排序

堆排序與快速排序,歸併排序一樣都是時間複雜度為o n logn 的幾種常見排序方法。學習堆排序前,先講解下什麼是資料結構中的二叉堆。二叉堆是完全二叉樹或者是近似完全二叉樹。二叉堆滿足二個特性 1 父結點的鍵值總是大於或等於 小於或等於 任何乙個子節點的鍵值。2 每個結點的左子樹和右子樹都是乙個二叉堆...