排序演算法之選擇排序

2022-03-11 12:12:47 字數 1149 閱讀 1510

從今天開始好好研究下排序演算法,每一種排序演算法都實現並分析。

排序的基本知識:檔案的排序,這些檔案包括資料項(item)和鍵(key),鍵是資料項的乙個小部分,用於控制排序。排序演算法的目的是重新組合資料項,使其鍵根據一些已經定義好的排序規則整齊排列。如果被排序的檔案適合放在記憶體中,則排序演算法被稱為內部排序,從磁碟中對檔案進行排序,稱之為外部排序

首先介紹的是一種最簡單的排序演算法。

選擇排序演算法步驟:首先選出陣列中最小的項,將它和陣列的第乙個成員交換(假如按照公升序排列),然後選出次小的項,將其與第二個成員交換。按照這種思路一直做下去,直到整個陣列排列完成。

實現源**:

#include #include 

using

namespace

std;

template

void exch(item &a, item&b)

template

void selection(item a,int l, int

r) }

exch(a[i],a[min]);

}}void

main()

else

for(i=0;i)

cout

cout

<

selection(a,

0,n-1

);

for(i=0;i)

cout

cout

<

}

執行結果:

選擇排序的乙個缺點就是,他的執行時間和檔案中已經有的排序關係很少。例如,改程式對已排好序的檔案或者資料項都相同的檔案排序所花的時間與對隨機排列的檔案排序所花的時間差不多。沒有很好的利用輸入檔案資料項原有的序列。

雖然選擇排序比較簡單並且執行時間上具有強迫性,但是它對於資料項比較大而鍵值比較小的檔案很實用,這時候移動資料所花的時間要比比較資料花的時間大的多,相比於其它的排序演算法,選擇排序移動資料的步數要比選擇排序多的多。

(to be continued!)

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...