常用排序演算法總結 選擇排序 java實現

2021-08-22 10:08:45 字數 1273 閱讀 1462

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對

選擇排序的基本思想:

給定陣列:int arr=;

第1趟排序,在待排序資料arr[1]~arr[n-1]中選出最小的資料,將它與arr[0]交換;

第2趟,在待排序資料arr[2]~arr[n-1]中選出最小的資料,將它與arr[1]交換;

以此類推,第i趟在待排序資料arr[i]~arr[n-1]中選出最小的資料,將它與r[i-1]交換,直到全部排序完成。

舉例:陣列 int arr=;

第一趟排序: 原始資料:4 6 3 2 1 5

最小資料1,把1放在首位,也就是4和1互換位置,

排序結果:1  6 3 2 4 5

第二趟排序:

第1以外的資料進行比較,2最小,2和6 交換

排序結果:1  2  3  6  4  5

第三趟排序:

除1、2以外的資料進行比較,3最小,不用換

排序結果:1  2  3  6  4  5

第四趟排序:

除第1、2、3以外的其他資料進行比較,4最小,6和4交換

排序結果:1  2  3  4  6  5

第五趟排序:

除第1、2、3、4以外的其他資料進行比較,5最小,5和6交換

排序結果:1  2  3  4  5  6

示例**如下:

public static void selectsort(int arr)

}// 如果要替換的位置為自己本身所在位置不交換無意義 見示例中的第三趟排序:

if(min != i )}}

以下是選擇排序複雜度:

平均時間複雜度

最好情況

最壞情況

空間複雜度

o(n²)

o(n²)

o(n²)

o(1)

選擇排序的簡單和直觀名副其實,這也造就了它」出了名的慢性子」,無論是哪種情況,哪怕原陣列已排序完成,它也將花費將近n²/2次遍歷來確認一遍。即便是這樣,它的排序結果也還是不穩定的。 唯一值得高興的是,它並不耗費額外的記憶體空間。

常用排序演算法 選擇排序

選擇法排序 找出最小值,依次第乙個位置互換。例如陣列 33,6,5,59,12 第一次遍歷 找出最小值 12與陣列第乙個值33互換 第二次遍歷 找出除陣列第乙個值以外的剩下的最小值 5,與陣列第二個位置的值6互換 外部迴圈設定遍歷次數,陣列5個元素最多需要4次遍歷,因為每次決定陣列的乙個位置,最後乙...

常用排序演算法 選擇排序

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方...

常用演算法之排序演算法 選擇排序

目錄 直接選擇排序 堆排序 思想 每趟從待排序的記錄序列中選擇關鍵字最小的記錄放置到已排序表的最前位置,直到全部排完。關鍵問題 在剩餘的待排序記錄序列中找到最小關鍵碼記錄。簡單的選擇排序 1 基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個位置...