選擇排序 (選擇排序和堆排序)

2021-10-21 19:59:12 字數 1971 閱讀 9047

原理:每一次從無序區間選出最大(或最小)的乙個元素,存放在無序區間的最後(或最前),直到全部待排序的資料元素排完 。

穩定性(不穩定)

​ 1.乙個穩定的排序可以變成不穩定的排序;

​ 2.乙個本身就不穩定的是不可能變成穩定的;

空間複雜度:o(1)

時間複雜度:o(o(n^2))

public

static

void

selectsort

(int

arr)}}

}

穩定性(不穩定)

​ 1.乙個穩定的排序可以變成不穩定的排序;

​ 2.乙個本身就不穩定的是不可能變成穩定的;

空間複雜度:o(1)

時間複雜度:o(n*logn)

public

static

void

heapsort

(int

arr)

}

//構造乙個堆

public

static

void

createheap

(int

arr)

}//向下調整方法

public

static

void

adjustdown

(int

arr,

int parent,

int len)

//到了這一步,已經找到最大的孩子,和雙親進行比較

if(arr[child]

> arr[parent]

)else

}}

3.倆個**結果測試

//選擇排序

public

class

testsort}}

}

//堆排序

public

static

void

heapsort

(int

arr)

}//構造乙個堆

public

static

void

createheap

(int

arr)

}//向下調整方法

public

static

void

adjustdown

(int

arr,

int parent,

int len)

//到了這一步,已經找到最大的孩子,和雙親進行比較

if(arr[child]

> arr[parent]

)else

}}

//主函式main用來測試

public

static

void

main

(string[

] args)

;selectsort

(arr2)

; system.out.

print

("選擇排序結果: ");

for(

int i =

0;i < arr2.length;i++

) system.out.

println()

;//堆排序

int[

] arr4 =

;heapsort

(arr4)

; system.out.

print

("堆排序結果: ");

for(

int i =

0;i < arr4.length;i++

) system.out.

println()

;}}

選擇排序(選擇排序和堆排序)

選擇排序 從序列中依次選出最小值 或者最大值 放在一側。這樣的排序叫選擇排序。這裡我們對選擇排序進行優化,一次就選出當前序列的最大值和最小值。分別放在最右端和最左端。然後left right 使得序列範圍縮小,再進行選擇最大和最小值。void selectsort int a,int n 3選擇排序...

選擇排序 選擇排序和堆排序

選擇排序 基本思想 每一趟 第i趟,i 0,1,n 2 在後面n i個待排序的資料元素集合中選出關鍵碼最小的資料元素,作為有序元素序列的第i個元素。待到第n 2趟做完,待排序元素集合中只剩下1 個元素,排序結束。一 選擇排序 每一次在一組數中選最大的放到最後,然後再在剩餘的數中選次大的數放到倒數第二...

排序 選擇排序 選擇排序 堆排序

寫在前面 上傳github交換排序選擇排序 堆排序 選擇排序 顧名思義,我們就可以猜到,它是原則合適的元素放到合適的位置 從圖中,我們可以得到 1.用第乙個元素,和其他所有的元素進行比較,找出最小的,然後進行交換 2.然後進行,資料的遞增 3.直到資料全部有序 void selectsort int...