選擇排序就是按照指定的先後順序依次從待排序的元素中選擇最大或最小的乙個元素,存放到序列的起始位置,直到完成全部排序為止。
如上圖所示,假設乙個序列的初始狀態為,將序列由小到大進行排序,每次遍歷時,將最小的數前置,防止再已排序元素的後面,直到完成排序為止。
第一次排序,將元素7與之後的其他元素進行比較,將最小的數交換到第乙個位置,找到最小的數為5。
第二次排序,將元素7與之後的其他元素進行比較,將最小的數交換到第二個位置,找到最小的數為6。
第三次排序,將元素9與之後的其他元素進行比較,將最小的數交換到第三個位置,找到最小的數為7。
第四次排序,將元素9與之後的其他元素進行比較,將最小的數交換到第四個位置,找到最小的數為8。
剩餘最後乙個元素9,位於序列的最後位置。
對乙個長度為n的序列由小到大進行排序,第i次排序需要找到的最小數為m,將其排在序列的第i位,排序最終完成時需要進行n-1次排序。
當進行第i次排序時,從第i位的元素開始依次向後比較,最後將最小的元素,排到序列的第i位。
public class selectsort ;
selectsort.sort(array);
system.out.println("排序後陣列:" + arrays.tostring(array));
}// 每次從陣列中選擇最小的數值,放置在已經排序資料的後面,直到全部排序結束為止
public static void sort(int a)
}// 陣列值交換
if (i != index) }}
}
時間複雜度:
選擇排序的比較次數與序列的初始狀態無關,其比較次數總是n(
n−1)
2 ,交換操作次數字於0到
(n−1
) 之間,當序列為正序時,元素的交換次數為0,當序列為反序時,元素的交換次數為3(
n−1)
。 因此,選擇排序的時間複雜度為o(
n2) 。
演算法穩定性:
對於序列,第一次遍歷第乙個元素和最後乙個元素發生位置交換,原序列中兩個的前後位置發生改變,因此選擇排序是一種不穩定的排序演算法。
排序 選擇排序(java實現)
選擇排序是一種簡單直觀的排序演算法,其基本原理是 1.對給定的一組記錄,經過第一輪的比較後會得到最小的記錄,然後將該記錄與第乙個記錄的位置進行交換 2.接著對不包括第乙個記錄外的其他記錄進行第二輪比較,得到最小的記錄與第二個記錄交換 3.重複上述過程,直到剩下的記錄只有乙個 以陣列 為例,選擇排序的...
java實現選擇排序
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面 後乙個元素 現變成了 前乙個元素 繼續跟他的 後乙個元素 進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置 下標 等到迴圈結束的時候,我們應該找到了最小的那個數的下標了...
選擇排序 java實現
選擇排序 選擇排序通過選擇和排序來實現排序,基本步驟如下 舉例實現 package com.linchong.bubblesort 選擇排序 version author linchong date 2018年6月2日 下午3 49 27 description 方法功能描述 概述 選擇排序就是在每...