基本排序演算法的C語言實現

2021-04-09 01:11:15 字數 1280 閱讀 2277

1、摘要

歷次找工作,經常會被要求寫排序演算法,每次都寫氣泡排序,而且每次都很心虛。不是因為怕寫的不對,而是因為自己的資料結構、演算法基本功不紮實。越來越覺得這些重要,不僅僅是理解原理那麼簡單,而是覺得應該自己能夠隨手實現它們,最少能夠實現乙個大概。

本文實現幾種內排序。接下來會依次實現其他一些演算法。

2、排序演算法實現

這個頁面介紹了排序是什麼,以及簡單提到了內排序和外排序的區別。而

這篇文章則詳細介紹了幾種排序的思想,並給出了pascal語言的實現。

常見內排序包括插入排序、氣泡排序、快速排序、直接選擇排序、堆排序、希爾排序和歸併排序等。其中

快速排序則為這些排序中的大牌明星,其平均效率遠低於其他排序方法。

下面列出幾個排序演算法的c語言實現,以便日後查閱。

l氣泡排序

void bubblesort(int ori, int len)

}   

}   

}   

l插入排序

void insertsort(int ori, int len)

ori[j] = tmp;

}   

}   

l直接選擇排序

void selectsort(int ori, int len)

}   

}   

}  

l快速排序

快速排序稍微複雜一點,用到兩個函式,其中getpivot函式的功能是獲取支點元素,該元素從陣列首尾以及中間位置的數中獲取,獲取規則是將這三個數排序,取中間值。需要注意的是這三個數被排序以後,最大的放在陣列最後,最小的放在陣列最前,而中間那個數則和倒數第二個數交換位置。

void quicksort(int data, int start, int end)

else

break;

}   

swap(&data[i], &data[end - 1]);

quicksort(data, start, i - 1);

quicksort(data, i + 1, end);

}   

else

}

static int getpivot(int data, int start, int end)

以上函式用到swap函式,用於交換兩個數的值。

static void swap(int *a, int *b)  

3、作者手記

青娛樂開發工程師。

4、更新日誌

5、參考文件

6、相關文件

排序演算法(C語言實現)

本文共介紹了7種排序演算法 參考文章 1.1 基本思想 依次向後兩兩相鄰比較,大的向後移 1.2 示例 void bubblesort int a,int n 2.1 基本思想 從無序佇列中選擇最小值,放置到有序佇列的末尾 2.2 示例 void selectsort int a,int n a j...

排序演算法 氣泡排序 C語言實現

氣泡排序介紹 氣泡排序 bubble sort 又稱為氣泡排序。這是一種較簡單的排序演算法。它會遍歷若干次要排序的陣列,每次遍歷時,它都會從前往後依次比較相鄰兩個數的大小 如果前者大於後者,則兩者位置互換。由此,一次遍歷後,最大元素就在數列末尾。採用相同方法再次遍歷時,第二大的元素就被排列在最大元素...

排序演算法的C語言實現 希爾排序

希爾排序和氣泡排序有點相似,但是不同的是希爾排序使用乙個序列h1,h2.hi,叫做增量序列。在使用增量hk排序後,所有相隔hk的元素都被排序。希爾排序衝破二次時間屏障的第一批演算法之一。它有乙個重要性質 hk 排序的檔案 此後將是 hk 1 排序 將保持它的 hk排序性,這樣各趟排序結果就不會打亂前...