演算法 java 選擇排序selectSort

2021-07-30 21:12:24 字數 1065 閱讀 6396

首先,找到陣列中最小的那個元素,其次,將它和陣列的第乙個元素交換位置(如果第乙個元素就是最小元素那麼它就和自己交換)。再次,在剩下的元素中找到最小元素,將它與陣列的第二個元素交換位置。如此往復,直到將整個陣列排序。

以下面5個無序的資料為例:

56 12 80 91 20(文中僅細化了第一趟的選擇過程)

第1趟:12 56 80 91 20

第2趟:12 20 80 91 56

第3趟:12 20 56 91 80

第4趟:12 20 56 80 91

時間複雜度

選擇排序的複雜度分析。第一次內迴圈比較n - 1次,然後是n-2次,n-3次,……,最後一次內迴圈比較1次。共比較的次數是 (n - 1) + (n - 2) + … + 1,求等差數列和,得 (n - 1 + 1)* n / 2 = n^2 / 2。捨去最高項係數,其時間複雜度為 o(n^2)

空間複雜度

o(1) 用於交換和記錄索引

穩定性:不穩定(比如序列[5, 5, 3]第一趟就將第乙個5與3交換,導致第乙個5挪動到第二個5後面

演算法第四版的類似實現

public

static

void

selectsort4(int arr)

}//交換最小索引和當前索引i的值

int temp = arr[minindex];

arr[minindex] = arr[i];

arr[i] = temp;}}

仔細思考了一下,上述實現不是最優實現

原因有兩點:

當外層迴圈迴圈到(len -1)時就不用繼續迴圈了

當當前索引i是最小值是不用交換

public

static

void

selectsort(int arr)

}if(minindex != i)}}

java選擇排序演算法

選擇排序和氣泡排序差不多,只是氣泡排序在發現比它小的時候就交換,而選擇排序是只有在確定了最小的資料之後,才會發生交換。選擇排序的基本思想 第i趟簡單選擇排序是指通過n i次關鍵字的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。先臨時記錄其位置,只有在一趟 迴圈完以後確定了最...

java排序演算法之 選擇排序

選擇排序是一種非常簡單的排序演算法,從字面意思我們就可以知道,選擇就是從未排序好的序列中選擇出最小 最大 的元素,然後與第 i 趟排序的第 i 1 陣列中下標從 0 開始 個位置的元素進行交換,第 i 個元素之 前的序列就是已經排序好的序列。整個排序過程只需要遍歷 n 1 趟便可排好,最後乙個元素自...

Java排序演算法 直接選擇排序

基本思想 直接選擇排序的基本操作就是每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完,它需要經過n 1趟比較。演算法不穩定,o 1 的額外的空間,比較的時間複雜度為o n 2 交換的時間複雜度為o n 並不是自適應的。在大多數情況下都...