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;
}
}
}
}
相關文章
-
排序之一:直接插入排序(C語言實現)
有很多時尚的女生都喜歡選擇一些好看的髮型,現在我們就一起來欣賞一下這些各種長度的女生的蛋卷頭髮型吧,這些 最新韓式蛋卷頭的燙捲髮型是特別的有氣質的,一起來欣賞一下這些顯氣質的髮型吧。無劉海的一款短髮的韓式風 -
C語言中使用快速排序算法對元素排序的實例
很多朋友對如何在C語言中使用快速排序算法對元素排序存在疑惑,下面小編爲大家整理了C語言中使用快速排序算法對元素排序的實例,希望能幫到大家! 調用C語言的快速排序算法qsort(); #include#include#include#define -
C語言冒泡排序算法實例
有人說,青春是一首雋永無瑕的詩,因爲有了追求,有了夢,青春的這首長詩才彌足珍貴。正因爲那執着的追求,我的哥哥在青春的路上才越走越“陽光燦爛”。 我的哥哥是一個執着追求的人。那還是在我上國小的時候,我的哥哥正面臨 -
C++ 排序插入排序詳解
插入排序的'基本思想是每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成爲止。下面是小編分享的C++ 排序插入排序詳解,一起來看一下吧。常見的插入排序有插入排序 -
c#冒泡排序算法
C#中如何實現冒泡排序?下面小編爲大家整理了c#冒泡排序算法,希望能幫到大家!冒泡排序(Bubble Sort)冒泡排序算法的運作如下:1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開 -
C語言的冒泡排序方法
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。那麼C語言的.冒泡排序方法是怎樣的呢?以下僅供參考!具體方法如下:#includevoid maopao -
經典c語言冒泡排序法
引導語:c語言是一種很有趣的`編程語言,以下是本站小編分享給大家的c語言經典冒泡排序法,歡迎閱讀!void BubleSort(int* siSortArray, int siLen){bool bSwapped = true;do{bSwapped= false;for(int i = 0; i < siLen - 1 -
C語言經典冒泡排序法
在一款短髮髮型的塑造之後,男生的魅力也會更加的帥氣,所以當一款短髮髮型被打造出來了之後,男生短髮髮型也可以完美塑造你更加完美的風情,用下面的五款男生短髮髮型來讓你塑造更加優雅的精彩瞬間哦!短髮髮型一樣可以做得更 -
C語言插入排序算法及實例代碼
插入排序是排序算法的一種,下面小編爲大家整理了C 語言插入排序算法及實例代碼,希望能幫到大家!這裏以從小到大排序爲例進行講解。基本思想及舉例說明插入排序的基本思想是,將元素逐個添加到已經排序好的數組中去,同時要求 -
C#排序算法之快速排序
C#排序算法怎樣快速排序呢?下面小編爲大家整理了C#排序算法之快速排序,希望能幫到大家! 快速排序實現:複製代碼 代碼如下:namespace QuickSort{class QuickSort{public static void Sort(int[] array){DoSort(array,0,