當前位置:才華齋>計算機>C語言>

c語言中氣泡排序、插入排序、選擇排序演算法比較

C語言 閱讀(2.2W)

掌握好常用的排序演算法,在實際的專案開發中可以節省很多的時間。每一種排序演算法在執行的效率上是存在差別的,這些微小的時間差,也許在平常的聯絡當中感覺不到,但是涉及到資料量比較大或者是在資源比較緊張的系統中就顯得尤其的重要,比如嵌入式系統。下面簡要介紹三種常用的排序演算法以及他們的執行效率的比較。以下僅供參考!

c語言中氣泡排序、插入排序、選擇排序演算法比較

氣泡排序

思路:將相鄰的兩個數比較,將較小的數調到前頭;有n個數就要進行n-1趟比較,第一次比較中要進行n-1次兩兩比較,在第j趟比較中,要進行n-j次兩兩比較。

實現程式碼

void BublleSort (int arr [], int count)

{

int i, j, temp;

for(j=0; j<count-1; j ) /* 冒泡法要排序n-1次*/

for(i=0; i<count-j-1; i )/* 值比較大的元素沉下去後,只把剩下的元素中的最大值再沉下去就可以啦 */

{

if(arr[i]>arr[i 1])/* 把值比較大的元素沉到底 */

{

temp=arr[i 1];

arr[i 1]=arr[i];

arr[i]=temp;

}

}

}

插入排序

思路:在得到要排序的陣列以後,講陣列分為兩個部分,陣列的第一個元素為一個部分,剩下的元素為一部分,然後從陣列的第二個元素開始,和該元素以前的所有元素比較,如果之前的元素沒有比該元素大的,那麼該元素的位置不變,如果有元素的值比該元素大,那麼記錄相愛他所在的位置;例如I,該元素的位置為k,則將從i到k位置上的所有元素往後移動一位,然後將k位置上的值移動到i位置上。這樣就找到了K所在的位置。每一個元素都這樣進行,最終就會得到排好順序的.陣列。

實現程式碼:

void InsertSort ( int arr[],int count)

{

int i,j,temp;

for(i=1; i<count; i )//陣列分兩個部分,從第二個陣列元素開始

{

temp = arr[i];//操作當前元素,先儲存在其它變數中

for(j=i-1; j>-1&&arr[j]>temp;j--)//從當前元素的上一個元素開始查詢合適的位置,一直查詢到首元素

{

arr[i] = arr[j];

arr[j] = temp;

}

}

}

選擇排序

思路:首先以一個元素為基準,從一個方向開始掃描,比如從左到右掃描,以A[0]為基準,接下來從A[0]….A[9]中找出最小的元素,將其與A[0]交換。然後將其基準位置右移一位,重複上面的動作,比如,以A[1]為基準,找出A[1]~A[9]中最小的,將其與A[1]交換。一直進行到將基準位置移到陣列最後一個元素時排序結束。

實現程式碼

void SelectSort(int arr[], int count)

{

int i,j,min,temp;

for(i=0; i<count; i )

{

min = arr[i];//以此元素為基準

for(j=i 1; j<count; j )//從j往前的資料都是排好的,所以從j開始往下找剩下的元素中最小的

{

if(min>arr[j])//把剩下元素中最小的那個放到arr[j]中

{

temp = arr[j];

arr[j] = min;

min = temp;

}

}

}

}