C 語言的排序演算法

2021-10-17 14:57:56 字數 2226 閱讀 6846

氣泡排序

氣泡排序(英語:bubble sort)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。

選擇排序

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

插入排序

插入排序(英語:insertion sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到 的額外空間的排序),因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。

希爾排序

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序是基於插入排序的以下兩點性質而提出改進方法的:

歸併排序

把資料分為兩段,從兩段中逐個選最小的元素移入新資料段的末尾。

快速排序

在區間中隨機挑選乙個元素作基準,將小於基準的元素放在基準之前,大於基準的元素放在基準之後,再分別對小數區與大數區進行排序。

**如下:

#include //氣泡排序

void bubble_sort(int arr,int len);

//選擇排序

void selection_sort(int arr,int len);

//插入排序

void insertion_sort(int arr,int len);

//希爾排序

void shell_sort(int arr, int len);

//歸併排序

void merge_sort(int arr, int len);

//快速排序

void quick_sort(int arr, int len);

void main();

// 獲取陣列長度

int len = (int) sizeof(arr) / sizeof(*arr);

// 呼叫排序演算法

//bubble_sort(arr,len);氣泡排序

//selection_sort(arr,len); 選擇排序

//insertion_sort(arr,len); 插入排序

//shell_sort(arr,len);//希爾排序

//merge_sort(arr,len); 歸併排序

quick_sort(arr,len);

for(int i = 0;iarr[j+1])

} }}// 選擇排序

void selection_sort(int arr,int len)

}if(min!=i) }}

// 插入排序

void insertion_sort(int arr,int len)

arr[j]=temp; }}

//希爾排序

void shell_sort(int arr, int len)

}// 歸併排序

void merge_sort_recursive(int arr, int reg, int start, int end)

void merge_sort(int arr, int len)

//快速排序

void swap(int *x, int *y)

void quick_sort_recursive(int arr, int start, int end)

if (arr[left] >= arr[end])

swap(&arr[left], &arr[end]);

else

left++;

if (left)

quick_sort_recursive(arr, start, left - 1);

quick_sort_recursive(arr, left + 1, end);

}void quick_sort(int arr, int len)

c語言排序演算法

很多朋友是以譚浩強老師編的 c語言教程 作為學習 c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者...

c語言排序演算法

c語言排序演算法 非穩定的排序演算法 選擇排序 快速排序 希爾排序 堆排序 穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序是穩定的排序演算法。讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若...

C語言排序演算法

1.插入排序 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新...