直接選擇排序和直接插入排序類似,都將資料分為有序區和無序區,所不同的是直接插入排序是將無序區的第乙個元素直接插入到有序區以形成乙個更大的有序區;而直接選擇排序是從無序區選乙個最小的元素直接放到有序區的最後。示例**上傳至:
演算法描述如下:
(1)初始時,陣列全為無序區為a[0...n-1]。令i = 0。
(2)在無序區a[i...n-1]中選取乙個最小的元素,將其與a[i]交換。交換之後a[0...i]就形成了乙個有序區。
(3)i++並重複第二步,直到i == n-1,排序完成。
實現如下:
//
// main.c
// selectsort
//// created by chenyufeng on 16/2/3.
//#include void selectsort(int *a,int n);
void swap(int *a,int *b);
int main(int argc, const char * argv) ;
selectsort(a,6);
for (int i = 0; i < 6 ; i++)
return 0;
}void selectsort(int *a,int n)
}//把無序區中最小的數放到有序區的最後乙個位置;
swap(&a[i],&a[minindex]);
}}void swap(int *a,int *b)
說明一下,直接選擇排序的時間複雜度為o(n^2),空間複雜度為o(1),是一種不穩定的排序。
本文參考:
經典演算法學習 直接選擇排序
直接選擇排序和直接插入排序類似,都將資料分為有序區和無序區,所不同的是直接插入排序是將無序區的第乙個元素直接插入到有序區以形成乙個更大的有序區 而直接選擇排序是從無序區選乙個最小的元素直接放到有序區的最後。示例 上傳至 演算法描述如下 1 初始時,陣列全為無序區為a 0.n 1 令i 0。2 在無序...
經典排序演算法學習筆記五 直接選擇排序
資料結構 陣列最差時間複雜度 o n 2 最優時間複雜度 o n 2 平均時間複雜度 o n 2 最差空間複雜度 n total,o 1 auxiliary 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置。然後,再從剩餘未排序元素中繼續尋找最小 大 元素,放到已排序序列的末尾。以此類...
經典演算法之選擇排序(直接選擇 堆排序)
注 文章 實驗樓 這一章我們來講解選擇排序,首先我們來講解其中最簡單的簡單選擇排序。簡單選擇排序的基本思想是通過n 1次資料元素的比較,從n i 1個記錄中選擇最小的資料,並與第i個資料進行交換,如下圖所示。簡單選擇排序的 實現 include include int n 選擇排序 void sel...