資料結構排序系列詳解之五 簡單選擇排序

2021-06-17 15:44:53 字數 826 閱讀 6421

在前面的部落格中已經講述了交換類的排序演算法,這節中開始說說選擇類的排序演算法了,首先來看一下選擇排序的演算法思想;

選擇排序的基本演算法思想:

每一趟在 n-i+1 (i=1,2,3,……,n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。

簡單選擇排序:

設所排序序列的記錄個數為n。i取1,2,…,n-1,從所有n-i+1個記錄(ri,ri+1,…,rn)中找出排序碼最小的記錄,與第i個記錄交換。執行n-1趟 後就完成了記錄序列的排序。

演算法實現**如下:

package exp_sort;

public class ******selectsort

}//交換最小數array[k]與第i位上的數

if (k != i)

} }public static void main(string args) ;

selectsort(array);

for (int i = 0; i < array.length; i++)

system.out.println("\n");

}}

演算法分析:

在此排序過程中,需要移動記錄的次數比較少。最好情況下,即待排序記錄初始狀態就已經是正序排列了,則不需要移動記錄;最壞情況下,即待排序記錄初始狀態是按照逆序排列的,則需要移動次數最多是:3(n-1)。排序過程中需要進行的比較次數與初始狀態下待排序的記錄序列的排列情況無關。當i=1時,需要進行n-1次比較;當i=n時,共需要進行的比較次數是:n(n-1)/2,即比較操作的時間複雜度是:o(n^2),進行移動操作的時間複雜度為o(n);該排序是不穩定排序。

大話資料結構之 簡單選擇排序

簡單選擇排序簡單選擇排序法 selection sort 就是通過n i次關鍵字間的比較,從n i 1個記錄中選出最小關鍵字的記錄,並和第i 1 i n 個記錄交換之。我們來看 void selection cort int array,int n if i min 段應該不難理解。這對陣列如 in...

資料結構 簡單選擇排序

include include include include include include define maxsize 100 define elemtype int define status int using namespace std 順序表資料結構 typedef struct sq...

資料結構 考研 簡單選擇排序

簡單選擇排序是最簡單的選擇類排序,是一種不穩定排序。每次在待排序區間尋找最小的乙個元素,將它與待排序區間的第乙個元素交換,緊接著待排序區間長度 1,再尋找當前待排序區間尋找最小的乙個元素,當待排序區間剩餘乙個元素的時候,選擇排序結束。void selectsort int arr,int len 如...