原理:每一次從無序區間選出最大(或最小)的乙個元素,存放在無序區間的最後(或最前),直到全部待排序的資料元素排完 。
穩定性(不穩定)
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...