简单选择排序(选择排序)
生活随笔
收集整理的這篇文章主要介紹了
简单选择排序(选择排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:
簡單選擇排序的思想是:設排序序列的記錄個數為n,進行n-1次選擇,每次在n-i+1(i = 1,2,...,n-1)個記錄中選擇關鍵字最小的記錄作為有效序列中的第i個記錄。
例如,排序序列(57,68,59,52)的過程是,進行3次選擇,第1次選擇在4個記錄中選擇最小的值為52,放在第1個位置,得到序列(52,68,59,57),第2次選擇從位置1開始的3個元素中選擇最小的值57放在第2個位置,得到有序序列(52,57,59,68),第3次選擇因為最小的值59已經在第3個位置不需要操作,最后得到有序序列(52,57,59,68)。
實現:
package suanfa;
/*
* 簡單選擇排序
*/
public class EasySelect {
public static void SelectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = i;
// 每次從未排序數組中找到最小值的坐標
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
}
// 將最小值放在最前面
if (min != i) {
int temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
public static void print(int src[]) {
for (int i = 0; i < src.length; i++) {
System.out.print(src[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int array[]= {57,68,59,52};
print(array);
SelectionSort(array);
print(array);
}
}
分析:
簡單選擇排序過程中需要進行的比較次數與初始狀態下待排序的記錄序列的排列情況 無關。當i=1時,需進行n-1次比較;當i=2時,需進行n-2次比較;依次類推,共需要進行的比較次數是(n-1)+(n-2)+…+2+1=n(n-1)/2,即進行比較操作的時間復雜度為 O(n^2) ,進行移動操作的時間復雜度為 O(n) 。總的時間復雜度為 O(n^2) 。
最好情況下,即待排序記錄初始狀態就已經是正序排列了,則不需要移動記錄。最壞情況下,即待排序記錄初始狀態是按第一條記錄最大,之后的記錄從小到大順序排列,則需要移動記錄的次數最多為3(n-1)。
簡單選擇排序是不穩定排序。
總結
以上是生活随笔為你收集整理的简单选择排序(选择排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MSSQL 重建索引(在线重建、控制最大
- 下一篇: 业务统计报表测试点