直接選擇是簡單排序,演算法思想是從第乙個數字開始,與後面的每個數字進行比較,如果該數字小了,那麼就把兩數進行交換,這樣一輪下來第乙個數字肯定是最小的數字,然後第二個數字開始與後面的數字進行比較,思想是一樣的,這樣的話,第二小的數字就到了第二個位置,這樣依次類推,排序就完成了。
來舉一組例子:
這樣一組數字進行選擇排序
先拿到第乙個數字5,然後與4進行比較,發現4小,然後5和4進行交換
然後現在4就變成了選中數字,繼續進行比較,和1進行比較發現1小
這樣1變成了選中數字,再與7比較發現不用交換,陸續與6,4,3,2比較都不用交換,這樣我們的第一趟就完成了,我們可以發現,第一躺完成了以後第乙個位置就是最小的數字,然後我們選中第二個位置5,與後面進行比較,完成第二趟排序
第二個小的數字就變到了第二個位置,這樣依次類推就完成了選擇排序
public
static
void
selectsort
(int
array)}}
}
選擇排序是選中乙個位置,然後不停的與後面的所有位置進行交換,是跳躍交換的,所以是不穩定的
特點:不穩定
選擇排序不論在何種情況下,都不會break跳出迴圈,所以它的最優最壞和平均時間複雜度都為o(n2)
最優時間複雜度:
o(n2)
最壞時間複雜度:
o(n2)
平均時間複雜度:
o(n2)
選擇排序直接進行交換,不依賴陣列,所以空間複雜度為o(1)
空間複雜度:
o(1)
Java排序演算法 直接選擇排序
基本思想 直接選擇排序的基本操作就是每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完,它需要經過n 1趟比較。演算法不穩定,o 1 的額外的空間,比較的時間複雜度為o n 2 交換的時間複雜度為o n 並不是自適應的。在大多數情況下都...
直接選擇排序java實現
常用的選擇排序方法有 直接選擇排序和堆排序 直接選擇排序是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列無序區的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法 比如序列 5,5,3 第一次就將第乙個 5 與 3 交換,導...
內排序演算法的java實現 直接選擇排序
內排序 資料是放在記憶體中處理,排序時不涉及資料的內 外存交換,則稱之為內排序。直接選擇排序的基本思想是 假定需要給n個資料元素排序,0 i n 1.資料元素的序號從0到n 1.第i趟排序開始時,當前有序區為第0個元素到第i 1個元素,無序區為第i個元素到第n 1個元素。該趟排序則是從當前無序區中選...