原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的演算法主要有簡單選擇排序、樹型選擇排序和堆排序。
簡單選擇排序的基本思想:給定陣列:int arr=;第1趟排序,在待排序資料arr[0]~arr[n-1]中選出最小的資料,將它與arrr[0]交換;第2趟,在待排序資料arr[1]~arr[n-1]中選出最小的資料,將它與r[1]交換;以此類推,第i趟在待排序資料arr[i-1]~arr[n]中選出最小的資料,將它與r[i-1]交換,直到全部排序完成。
舉例:陣列 int arr=;
第一趟排序: 原始資料:5 2 8 4 9 1
也就是先把5定為最小的數,其下標賦值給min,然後後面的數與arr[min]比較,如果有小於arr[min]的數,將其下標賦值給min,然後繼續比較直至陣列結束,也就是每一次只是記錄較小數的下標,不會進行交換,只在一邊遍歷結束才進行一次交換
最小資料1,把1放在首位,也就是1和5互換位置,
排序結果:1 2 8 4 9 5
第二趟排序:
第1以外的資料進行比較,2最小,
排序結果:1 2 8 4 9 5
第三趟排序:
除1、2以外的資料進行比較,4最小,8和4交換
排序結果:1 2 4 8 9 5
第四趟排序:
除第1、2、4以外的其他資料進行比較,5最小,8和5交換
排序結果:1 2 4 5 9 8
第五趟排序:
除第1、2、4、5以外的其他資料進行比較,8最小,8和9交換
排序結果:1 2 4 5 8 9
**如下:
public
class selection
num++;
}exch(a, i, min);
}system.out.print("迴圈次數:"+num);
選擇排序的時間複雜度:簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 n 個元素,則比較次數永遠都是n (n - 1) / 2。而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0。當序列反序時,移動次數最多,為3n (n - 1) / 2。
所以,綜上,簡單排序的時間複雜度為 o(n2)。
排序 選擇排序(java實現)
選擇排序是一種簡單直觀的排序演算法,其基本原理是 1.對給定的一組記錄,經過第一輪的比較後會得到最小的記錄,然後將該記錄與第乙個記錄的位置進行交換 2.接著對不包括第乙個記錄外的其他記錄進行第二輪比較,得到最小的記錄與第二個記錄交換 3.重複上述過程,直到剩下的記錄只有乙個 以陣列 為例,選擇排序的...
java實現選擇排序
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面 後乙個元素 現變成了 前乙個元素 繼續跟他的 後乙個元素 進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置 下標 等到迴圈結束的時候,我們應該找到了最小的那個數的下標了...
選擇排序 java實現
選擇排序 選擇排序通過選擇和排序來實現排序,基本步驟如下 舉例實現 package com.linchong.bubblesort 選擇排序 version author linchong date 2018年6月2日 下午3 49 27 description 方法功能描述 概述 選擇排序就是在每...