排序之選擇排序

2021-10-07 21:05:37 字數 1343 閱讀 8485

選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是o(n²)的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不占用額外的記憶體空間了吧。

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始(末尾)位置。

再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到未排序序列的起始(末尾)位置。

重複第二步,直到所有元素均排序完畢。

/**選擇排序*/

public

class

selectionsort

}this

.swap

(arr,i,minindex);}

}/**比較兩者的大小*/

private boolean greater

(comparable a, comparable b)

/**交換位置*/

private

void

swap

(comparable[

] arr,

int i ,

int j)

}

public

class

selectionsorttest

; selectionsort selectionsort =

newselectionsort()

; selectionsort.

sort

(arr)

; system.out.

println

(arrays.

tostring

(arr));

//[1, 1, 2, 3, 4, 5, 6, 8, 9]

}}

選擇排序使用了雙層for迴圈,其中外層迴圈完成了資料交換,內層迴圈完成了資料比較,所以我們分別統計資料交換和資料比較的次數:

(n-1)+(n-2)+…+2+1 = n(n-1)/2

資料交換次數:

3*(n-1)

時間複雜度:

n(n-1)/2+3*(n-1)

根據大o推到演算法,保留最高端項,時間複雜度為o(n^2)

排序之選擇排序

書接上文,下面是選擇排序。選擇排序是最容易想到也是最容易實現的排序方式。主要思想 n個元素的陣列,每次從原陣列中找到最小的乙個元素,將這個元素加入新陣列,再把這個元素從元陣列中刪除,就完成了一次選擇。經過n 1次選擇後原陣列中剩下乙個元素,就是最大的乙個元素,將他加入新陣列裡,就完成了選擇排序。這個...

排序之選擇排序

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。乙個長度為n的待排序列,先找出 0,n 1 區間內最小的數,放在第一位,再找出 2...

排序之選擇排序

二 選擇排序 1 選擇排序 區間在不斷地變小 基本思想 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。首先,選出最小的數放在第一位,然後選擇第二小的數,放在...