日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 排序 —— 直接选择排序

發布時間:2025/3/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 排序 —— 直接选择排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

直接選擇排序又稱簡單選擇排序,是一種不穩定的排序方法,其是選擇排序中最簡單一種,其基本思想是:第 i 趟排序再待排序序列 a[i]~a[n] 中選取關鍵碼最小的記錄,并和第 i 個記錄交換作為有序序列的第 i 個記錄。

其實現利用雙重循環,外層 i 控制當前序列最小值存放的數組元素位置,內層循環 j 控制從 i+1 到 n 序列中選擇最小的元素所在位置 k

【排序過程】

1.排序過程

具體的排序過程為:

  • 將整個記錄序列劃分為有序區和無序區,初始時有序區為空,無序區含有待排序的所有記錄
  • 在無序區選擇關鍵碼最小的記錄,將其與無序區中的第一個元,使得有序區擴展一個記錄,同時無序區減少了一個記錄
  • 不斷重復步驟 2,直到無序區只剩下一個記錄為止
  • 2.實例

    ?初始關鍵字:『?8526931407?

    ?第一趟排序后:0,『526931487

    ?第二趟排序后:01,『26935487

    ?第三趟排序后:012,『6935487

    ?第四趟排序后:0123,『965487

    ?第五趟排序后:01234,『65987

    ?第六趟排序后:012345,『6987

    ?第七趟排序后:0123456,『987

    ?第八趟排序后:01234567,『89

    ?第九趟排序后:012345678,『9

    ?結果: ? ? ? ? ??0123456789?

    ??????????

    ? ? ?排序過程? ? ? ? ? ? ? ? ? ? 宏觀過程

    【時空復雜度分析】

    容易看出,待排序序列為正序,移動次數最小,為 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]);} }

    ?

    總結

    以上是生活随笔為你收集整理的理论基础 —— 排序 —— 直接选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。