八大排序之選擇排序

2021-08-22 19:24:46 字數 1208 閱讀 7760

思想:

每一趟都從待排序的數列中選擇乙個最大(最小)的,放在數列的最後乙個位置(或起始位置)直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

**:例:9 5 3 4 6 2 8 1 7 0

} if (maxpos != len - 1 - i) //如果最大的元素就是在最後位置,就不用交換

}}int main()

; int len = sizeof(arr) / sizeof(arr[0]);

select_sort(arr, len);

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

system("pause");

return 0;

}優化:

選擇排序的每一趟記錄最大值,我們是不是可以在一趟中,把最小值和最大值都記錄下來,這樣就可以只完成一半的工作

}//這個if是為了判斷第乙個元素是不是最大的,因為如果第乙個元素是最大的,會將最大的元素換位置

//比如,上述中的第一步,9是最大的,如果9和0換位置,但maxpos仍然是0,這是第乙個元素就變為了0,

//maxpos卻沒有發生變化,再將最大的元素和最後乙個元素換位置,就會是0和最後乙個元素換位置,而不是最大的元素

//所以這種情況就要先將換後的位置賦值給maxpos

swap(arr + minpos, arr + left);

if (maxpos == left)

swap(arr + maxpos, arr + right);

left++;

right--;

} }時間複雜度: o(n^2)

八大排序之選擇排序

個人部落格 建議先看排序綜述,傳送門 資料結構與演算法系列之一 八大排序綜述。選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末...

八大排序之選擇排序

每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。每次掃瞄找到最小,到掃瞄到末尾,將本次掃瞄的最小放到左邊 注意與氣泡排序相比較...

八大排序之選擇排序

一 基本思想 每次從待排記錄中選出最小值放在有序記錄的末尾。等每乙個待排元素均被選出後,整個記錄排序就完成了。二 實現步驟 這裡採用雙向選擇排序,每次從待排記錄中選出最大值和最小值,最大值和待排記錄的最後一位交換位置,最小值和待排記錄的第一位交換位置。注意,交換位置分如下情況 1 最大值在最左邊,最...