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,台灣譯為 泡沫排序或氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩...