• 您現在的位置是:首頁 >動態 > 2023-08-07 11:52:11 來源:

    排序算法復雜度(排序法)

    導讀 大家好,我是小夏,我來為大家解答以上問題。排序算法復雜度,排序法很多人還不知道,現在讓我們一起來看看吧!1、選擇排序的基本思想是:...

    大家好,我是小夏,我來為大家解答以上問題。排序算法復雜度,排序法很多人還不知道,現在讓我們一起來看看吧!

    1、選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基于此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。

    2、簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

    3、以下為簡單選擇排序的存儲狀態,其中大括號內為無序區,大括號外為有序序列:

    4、初始序列:{ 49 27 65 97 76 12 38 }

    5、第1趟:12與49交換:12 { 27 65 97 76 49 38 }

    6、第2趟:27不動 :12 27 { 65 97 76 49 38 }

    7、第3趟:65與38交換:12 27 38 { 97 76 65 49}

    8、第4趟:97與49交換:12 27 38 49 { 97 76 65 }

    9、第5趟:76與65交換:12 27 38 49 65 { 97 76 }

    10、第6趟:97與76交換:12 27 38 49 65 76 97 完成

    11、簡單選擇排序的算法具體描述如下:

    12、void SelectSort(RecordType r[], int length) /*對記錄數組r做簡單選擇排序,length為待排序記錄的個數*/

    13、{

    14、int temp;

    15、for ( i=0 ; i< length-1 ; i++) //n-1趟排序

    16、{

    17、int index=i; //假設index處對應的數組元素是最小的

    18、for ( j=i+1 ; j < length ; j++)  //查找最小記錄的位置

    19、if (r[j].key < r[index].key )

    20、index=j;

    21、if ( index!=i)  //若無序區第一個元素不是無序區中最小元素,則進行交換

    22、{ temp= r[i]; r[i]= r[index]; r[index]=temp; } //利用temp作為臨時空間,兩個值交換的橋梁

    23、}

    24、}

    本文到此講解完畢了,希望對大家有幫助。

  • 成人app