複習資料結構:排序(三)——選擇排序
選擇排序的核心是:每趟選擇最小的元素和首部交換。
時間複雜度:O(n^2)。
選擇排序是一種不穩定的排序,為什麼呢?因為不好處理相等兩個數的前後位置,舉個例子,序列5 8 5 2 9, 我們知道第一遍選擇第1個元素5會和2交換,那麼原序列中2個5的相對前後順序就被破壞了,所以選擇排序不是一個穩定的排序演算法。所以穩定排序是一定不會改變相等數之間之前位置關係的。
實現程式碼如下:
#include<iostream>
using namespace std;
void SelectSort(int a[], int n)
{
for(int i = 0; i < n-1; i++) // 注意到n-1
{
int minIndex = i+1;
for(int j = i+1; j < n; j++)
{
if(a[j] < a[minIndex])
minIndex = j; // 選擇i+1往後最小的數
}
if(a[minIndex] < a[i])
swap(a[minIndex], a[i]);
}
}
int main()
{
int a[] = {1, 6, 4, 3, 8, 2};
SelectSort(a, 6);
for(int i = 0; i < 6; i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}
參考連結:
http://blog.csdn.net/xiazdong/article/details/8462393
http://blog.csdn.net/hguisu/article/details/7776068
http://zhidao.baidu.com/link?url=zFcwJJZtDlBDx-5GK6_4EVHMseEJg_mWwNnPVAym4yPJk9YjYch3qpF_-FSyKspp_wxQZnS1UUzlpZxGhspHUK
相關文章
- 資料結構32:選擇排序資料結構排序
- 資料結構學習筆記-簡單選擇排序資料結構筆記排序
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 演算法與資料結構系列 ( 三 ) - 選擇排序法- Select Sort演算法資料結構排序
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 演算法與資料結構——選擇排序(c++)演算法資料結構排序C++
- 排序——選擇排序小練習(二)排序
- 排序——選擇排序小練習(一)排序
- 【圖解資料結構】 一組動畫演示選擇排序圖解資料結構動畫排序
- 資料結構和演算法:03.冒泡、選擇排序資料結構演算法排序
- 資料結構與排序資料結構排序
- 選擇排序和快速排序排序
- 選擇排序排序
- 資料結構學習筆記-堆排序資料結構筆記排序
- 資訊學奧賽複賽複習13-CSP-J2021-02插入排序-排序穩定性、插入排序、sort排序、結構圖、計數排序排序
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- Java資料結構與排序演算法 (三)Java資料結構排序演算法
- 排序演算法:選擇排序排序演算法
- 排序演算法__選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 桶排序 選擇,插入排序排序
- 演算法學習之選擇排序和堆排序:演算法排序
- 看圖輕鬆理解資料結構與演算法系列(選擇排序)資料結構演算法排序
- js選擇排序JS排序
- 01選擇排序排序
- 選擇排序法排序
- Java 選擇排序Java排序
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- 經典排序之選擇排序(Java)排序Java
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 【一起學習排序演算法】3 選擇排序排序演算法
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- 資料結構之計數排序資料結構排序
- 資料結構第10章 排序資料結構排序
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- php實現 氣泡排序,插入排序,選擇排序PHP排序