簡單選擇排序演算法

2021-07-15 19:40:27 字數 1750 閱讀 9853

簡單選擇排序思想:首先,找到陣列中最小的元素,其次,將它和陣列第乙個元素交換位置;再次,在剩下的元素中找到最小的元素,將它與陣列中的第二個元素交換。如此亡故,直到將整個陣列排序。

這種方法叫做選擇排序,因為它在不斷地選擇剩餘元素之中的最小者。

先說看每步的狀態變化,後邊介紹細節,現有無序陣列[6 2 4 1 5 9]

第一趟找到最小數1,放到最前邊(與首位數字交換)

交換前:| 6 | 2 | 4 | 1 | 5 | 9 |

交換後:| 1 | 2 | 4 | 6 | 5 | 9 |

第二趟找到餘下數字[2 4 6 5 9]裡的最小數2,與當前陣列的首位數字進行交換,實際沒有交換,本來就在首位

交換前:| 1 | 2 | 4 | 6 | 5 | 9 |

交換後:| 1 | 2 | 4 | 6 | 5 | 9 |

第三趟繼續找到剩餘[4 6 5 9]數字裡的最小數4,實際沒有交換,4待首位置無須交換

第四趟從剩餘的[6 5 9]裡找到最小數5,與首位數字6交換位置

交換前:| 1 | 2 | 4 | 6 | 5 | 9 |

交換後:| 1 | 2 | 4 | 5 | 6 | 9 |

第五趟從剩餘的[6 9]裡找到最小數6,發現它待在正確的位置,沒有交換

排序完畢輸出正確結果[1 2 4 5 6 9]

第一趟找到最小數1的細節

當前陣列是| 6 | 2 | 4 | 1 | 5 | 9 |

先把6取出來,讓它扮演最小數

當前最小數6與其它數一一進行比較,發現更小數就交換角色

當前最小數6與2比較,發現更小數,交換角色,此時最小數是2,接下來2與剩餘數字比較

當前最小數2與4比較,不動

當前最小數2與1比較,發現更小數,交換角色,此時最小數是1,接下來1與剩餘數字比較

當前最小數1與5比較,不動

當前最小數1與9比較,不動,到達末尾

當前最小數1與當前首位數字進行位置交換,如下所示

交換前:| 6 | 2 | 4 | 1 | 5 | 9 |

交換後:| 1 | 2 | 4 | 6 | 5 | 9 |

完成一趟排序,其餘步驟類似

選擇排序有兩個明顯的特點:

1.執行時間跟輸入無關。

為了找出最小元素而掃瞄一遍陣列並不能為下一次掃瞄提供任何資訊。

2.資料移動是最少的。

每次交換都會改變兩個陣列元素的值。

public class selectionsort 

}if (minindex != i)

} return a;

} public static void main(string args) ;

int n = a.length;

selectionsort selectionsort = new selectionsort();

double start = system.currenttimemillis();

int b = selectionsort.selectsort(a, n);

for (int i = 0; i < n; i++)

system.out.print(b[i] + ",");

double end = system.currenttimemillis();

}}

輸出:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,

簡單選擇排序演算法

include include include 排序用到的結構和函式 define maxsize 20 typedef struct sqlist 交換l中陣列r的下標為i和j的值 void swap sqlist l,int i,int j 簡單選擇排序 void selectsort sqli...

排序演算法 簡單選擇排序

簡單選擇排序是一種選擇排序。1.簡單選擇排序的定義 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。2.簡單選擇排序的流程 例項 注 紅色數字是位置發生變化的數值。3.簡單選擇排序的 實現 public class selectsort 若min有變化,...

排序演算法 簡單選擇排序

簡單選擇排序法就是通過n i次關鍵字比較,找到最小的關鍵字下標,最後在替換n i下標和最小下標的值。簡單排序的思想和氣泡排序的思想的區別是氣泡排序是相鄰關鍵字兩兩比較,如果小,則直接替換,可能在一輪迴圈會進行多次值交換。而簡單選擇排序法是一輪迴圈找到最小關鍵字下標,最後進行最多一次替換。public...