
排序系列:
冒泡排序
選擇排序(Select Sort) 是直觀的排序,通過一個中間量從帶排序的的數中找出最大或最小的交換到對應位置,再選擇次之,選擇排序和冒泡排序一樣,都有兩層回圈,
讓我們通過動態圖來看一下選擇排序的程序圖:

讓我們通過動態圖來看一下選擇排序的程序圖:
這個動態圖演示了一個無序陣列使用選擇排序轉變為一個從大到小的有序陣列,讓我們來觀察一下,在進入內回圈之前,會記錄一個值,這個值是當前外層回圈A[i]的值,之后拿著這個值,在內回圈遍歷陣列的時候,跟陣列的元素一個一個的比較,如果這個值比當前下標的元素的大,那么就雙方的值繼續交換,內回圈完成后,將這個值再賦值給A[i],經過內回圈怎么一折騰,最后A[i]一定是拿到最小或者最大的值,
和冒泡排序不一樣的是冒泡排序如果兩個不一樣當場就交換,而選擇排序是將值給了一個中間變數,讓這個中間變數加入內回圈,等內回圈結束,把真正最大或者最小的值賦值給外出回圈的A[i],
選擇排序原理總結
[1]記錄陣列第一個元素的值(陣列長度n),
[2]遍歷n-1次,用該值與其他元素比較,找到最大或者最小的一個數交換,
[3]記錄陣列第二個元素的值,
[4]遍歷n-2次,用該值與其他元素比較,找到最大或者最小的一個數交換,
[5]重復上述步驟,遍歷N次,直到沒有要比較的數,
代碼
int array[] = { 7,10,12,3,9,5 };
for (int i = 0; i < 6; i++)
{
int minkey = array[i];
for (int j = i + 1; j < 6; j++)
{
if (minkey < array[j])
{
int tamp = array[j];
array[j] = minkey;
minkey = tamp;
}
}
array[i] = minkey;
}
CSDN認證博客專家
Qt
C
C++
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/260616.html
標籤:其他
