理论基础 —— 排序 —— 直接选择排序
【概述】
直接選擇排序又稱簡單選擇排序,是一種不穩定的排序方法,其是選擇排序中最簡單一種,其基本思想是:第 i 趟排序再待排序序列 a[i]~a[n] 中選取關鍵碼最小的記錄,并和第 i 個記錄交換作為有序序列的第 i 個記錄。
其實現利用雙重循環,外層 i 控制當前序列最小值存放的數組元素位置,內層循環 j 控制從 i+1 到 n 序列中選擇最小的元素所在位置 k
【排序過程】
1.排序過程
具體的排序過程為:
2.實例
?初始關鍵字:『?8,5,2,6,9,3,1,4,0,7?』
?第一趟排序后:0,『5,2,6,9,3,1,4,8,7』
?第二趟排序后:0,1,『2,6,9,3,5,4,8,7』
?第三趟排序后:0,1,2,『6,9,3,5,4,8,7』
?第四趟排序后:0,1,2,3,『9,6,5,4,8,7』
?第五趟排序后:0,1,2,3,4,『6,5,9,8,7』
?第六趟排序后:0,1,2,3,4,5,『6,9,8,7』
?第七趟排序后:0,1,2,3,4,5,6,『9,8,7』
?第八趟排序后:0,1,2,3,4,5,6,7,『8,9』
?第九趟排序后:0,1,2,3,4,5,6,7,8,『9』
?結果: ? ? ? ? ?『?0,1,2,3,4,5,6,7,8,9?』
??????????
? ? ?排序過程? ? ? ? ? ? ? ? ? ? 宏觀過程
【時空復雜度分析】
容易看出,待排序序列為正序,移動次數最小,為 0 次;待排序序列為逆序時,移動次數最多,為 3(n-1) 次。
但無論記錄的初始排列如何,關鍵碼的比較次數相同,第 i 趟排序需進行 n-i 次關鍵碼的比較,而簡單選擇排序需要進行 n-1 趟排序,因此,總的比較次數為 O(n^2)
故而,無論是最優、最差時間復雜度,還是平均時間復雜度,均為 O(n^2)
對于空間復雜度來說,簡單選擇排序僅需一個存儲空間用于記錄交換的暫存單元,即空間復雜度為 O(1)
【源程序】
void selectSort(int a[],int n){for(int i=1;i<=n-1;i++){//進行n-1趟選擇int index=i;for(int j=i+1;j<=n;j++)//從無序區選取最小的記錄if(a[index]>a[j])index=j;if(index!=i)swap(a[i],a[index]);} }?
總結
以上是生活随笔為你收集整理的理论基础 —— 排序 —— 直接选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算分数的浮点数值(信息学奥赛一本通-T
- 下一篇: 球弹跳高度的计算(信息学奥赛一本通-T1