複習資料結構:排序(三)——選擇排序
選擇排序的核心是:每趟選擇最小的元素和首部交換。
時間複雜度: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:選擇排序資料結構排序
- 複習資料結構:排序(一)——插入排序資料結構排序
- 資料結構學習筆記-簡單選擇排序資料結構筆記排序
- 複習資料結構:排序演算法(六)——堆排序資料結構排序演算法
- 複習資料結構:排序演算法(七)——桶排序資料結構排序演算法
- 複習資料結構:排序演算法(八)——基排序資料結構排序演算法
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 複習資料結構:排序演算法(二)——氣泡排序資料結構排序演算法
- 複習資料結構:排序演算法(四)——歸併排序資料結構排序演算法
- 資料結構&演算法實踐—選擇排序資料結構演算法排序
- 【圖解資料結構】 一組動畫演示選擇排序圖解資料結構動畫排序
- 演算法與資料結構——選擇排序(c++)演算法資料結構排序C++
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 演算法與資料結構系列 ( 三 ) - 選擇排序法- Select Sort演算法資料結構排序
- 複習資料結構:排序演算法(五)——快速排序的各種版本資料結構排序演算法
- 排序——選擇排序小練習(二)排序
- 排序——選擇排序小練習(一)排序
- 資料結構和演算法:03.冒泡、選擇排序資料結構演算法排序
- 排序之選擇排序排序
- 資料結構學習(C++)續——排序【3】交換排序 (轉)資料結構C++排序
- 選擇排序和快速排序排序
- 選擇排序排序
- 資料結構與排序資料結構排序
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序
- 【資料結構】堆排序資料結構排序
- 【資料結構】快速排序資料結構排序
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- 排序演算法總結之直接選擇排序排序演算法
- JAVA小練習氣泡排序,選擇排序和插入排序Java排序
- 資料結構學習筆記-堆排序資料結構筆記排序
- 資料結構學習(C++)續——排序【2】插入排序 (轉)資料結構C++排序
- 資料結構學習(C++)續——排序【6】內部排序總結 (轉)資料結構C++排序
- 排序演算法__選擇排序排序演算法
- 排序演算法:選擇排序排序演算法
- 選擇排序和氣泡排序排序