八大排序之選擇排序

2021-09-12 10:32:21 字數 660 閱讀 4013

每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

每次掃瞄找到最小,到掃瞄到末尾,將本次掃瞄的最小放到左邊

注意與氣泡排序相比較,氣泡排序相鄰兩個比較,每次比較都可能發生交換,而選擇只是每輪中選擇最小的元素,最後交換一次,如圖:

swap(arr + min, arr + i); // 交換

} show("selection sort:", arr, len); // 列印結果

}void swap(int *x, int *y)

void show(const char *str, const int *arr, const int len)

int main()

; selection_sort(arr, 10);

return 0;

}

八大排序之選擇排序

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

八大排序之選擇排序

思想 每一趟都從待排序的數列中選擇乙個最大 最小 的,放在數列的最後乙個位置 或起始位置 直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。例 9 5 3 4 6 2 8 1 7 0 if maxpos len 1 i 如果最大的元素就是在最後位置,就不用交換 int main int le...

八大排序之選擇排序

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