幾種常見的排序演算法及實現(一)

2021-07-23 18:28:55 字數 939 閱讀 7320

1、選擇排序

基本原理:對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄與第乙個記錄的位置進行交換;接著對不包含第乙個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二個記錄進行位置交換;重複該過程,直到進行比較的記錄只有乙個時為止。

void

selectsort(int

a,int

n) }

if(flag!=i)

}}

從簡單選擇排序的過程來看,它的特點就是交換移動資料次數相對少,這樣也就節約了相應的時間。無論是最好情況,還是最差情況,其比較的次數都是一樣的,在第i趟排序需要進行次。而對於交換次數而言,最好的情況是有序,需要交換0次;最差的情況,即逆序時,交換次數為次,基於最終的排序時間是比較和交換的次數總和,因此總的時間複雜度依然為
2、插入排序

原理:對於給定的一組記錄,初始時假設第乙個記錄自成乙個有序序列,其餘的記錄為無序序列;接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直至最後乙個記錄插入到有序序列中為止。

void insertsort(int a,int n)

else

break;

}a[j+1]=temp;

}}

3、氣泡排序

基本思想(假設由小到大排序):對於給定的n個記錄,從第乙個記錄開始依次對相鄰的兩個記錄進行比較,當前面的記錄大於後面的記錄時,交換其位置,進行一輪比較和換位後,n個記錄中的最大記錄將位於第n位;然後對前(n-1)個記錄進行第二輪比較;重複該過程直到進行比較的記錄只剩下乙個時為止。

void swap(int& a,int& b)

void bubblesort(int a,int n)}}

}

幾種常見的排序演算法(一)

基本過程 每次從未排序序列中選擇出最小 最大 的資料,和未排序序列的第乙個資料交換。時間複雜度 o n 2 過程圖示 演算法實現 void selectsort int a,int len if i k 基本過程每次都比較相鄰的兩個資料,把較大的交換到靠後的位置,則一趟排序之後就會得到無序序列中最大...

java實現常見的幾種排序演算法

public static void selectsort int array if i min public static void bubble int array if flag false public static void insertsort int numbers numbers j...

php實現幾種常見的排序演算法

交換排序 交換排序的基本思想是,比較兩個記錄鍵值的大小,如果這兩個記錄鍵值的大小出現逆序,則交換這兩個記錄,這樣將鍵值較小的記錄向序列前部移動,鍵值較大的記錄向序列後部移動。氣泡排序 bubble sort,台灣譯為 泡沫排序或氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩...