每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。
每次掃瞄找到最小,到掃瞄到末尾,將本次掃瞄的最小放到左邊
注意與氣泡排序相比較,氣泡排序相鄰兩個比較,每次比較都可能發生交換,而選擇只是每輪中選擇最小的元素,最後交換一次,如圖:
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 最大值在最左邊,最...