排序演算法總結之直接選擇排序
堆排序就是選擇排序的一種,不過我們這裡 寫的直接選擇排序就非常簡單了,它和直接插入排序很像,都將資料分為有序區和無序區,所不同的是直接播放排序是將無序區的第一個元素直接插入到有序區以形成一個更大的有序區,而直接選擇排序是從無序區選一個最小的元素直接放到有序區的最後。(和冒泡也很像,只不過是一個個的換,而這個是找到最小的再換)
這裡參考的是這位大神的部落格http://blog.csdn.net/morewindows/article/details/6671824
設陣列為a[0…n-1]。
1. 初始時,陣列全為無序區為a[0..n-1]。令i=0
2. 在無序區a[i…n-1]中選取一個最小的元素,將其與a[i]交換。交換之後a[0…i]就形成了一個有序區。
3. i++並重復第二步直到i==n-1。排序完成。
void SelectSort(int a[],int N)
{
int i,j,MinIndex;
for(i=0;i<N;i++)
{
MinIndex=i;//找最小元素
for(j=i+1;j<N;j++)
if(a[j]<a[MinIndex])
MinIndex=j;
Swap(a[i],a[MinIndex]);
}
}
對於Swap()函式,最好的辦法是加一箇中間數,如
inline void Swap(int &a, int &b) { int c = a; a = b; b = c; } 不加的話如下,要加個判斷 inline void Swap1(int &a, int &b) { if (a != b) //這裡加個判斷,因為如果a==b時無判斷會讓這個數為0 { a ^= b; b ^= a; a ^= b; } }
相關文章
- 直接選擇排序演算法彙總排序演算法
- PHP 排序演算法之選擇排序PHP排序演算法
- 排序之選擇排序排序
- Python排序演算法之 選擇排序Python排序演算法
- 排序演算法入門之「選擇排序」排序演算法
- 排序演算法__選擇排序排序演算法
- 排序演算法:選擇排序排序演算法
- 排序演算法之「選擇排序(SelectionSort) 」排序演算法
- 排序演算法總結之堆排序排序演算法
- 排序演算法總結之希爾排序排序演算法
- 演算法學習之選擇排序和堆排序:演算法排序
- 畫江湖之演算法篇【排序演算法】選擇排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 選擇排序演算法排序
- 排序演算法總結之歸併排序排序演算法
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 排序演算法入門:選擇排序排序演算法
- 排序演算法——簡單選擇排序排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 經典排序之選擇排序(Java)排序Java
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 陣列基本操作及冒泡演算法、直接選擇排序陣列演算法排序
- 演算法基礎:排序演算法:選擇排序演算法排序
- 一組關鍵字序列,分別給出用希爾排序、直接選擇排序演算法從小到大排序結果排序演算法
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 常用演算法-選擇排序演算法排序
- java選擇排序演算法Java排序演算法
- 深入淺出的排序演算法-選擇排序排序演算法
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- 程式猿修仙之路--演算法之選擇排序演算法排序
- PHP基礎演算法之選擇排序法PHP演算法排序
- 排序演算法之冒泡,選擇,插入和希爾排序演算法
- #排序演算法#【6】排序演算法總結排序演算法
- C#實現——十大排序演算法之選擇排序C#排序演算法
- 選擇排序和快速排序排序
- go slice/map型別 排序(選擇排序演算法)Go型別排序演算法
- 選擇排序排序