常用排序方法(c語言)

2021-10-21 00:19:35 字數 2311 閱讀 4824

/*氣泡排序:它重複地走訪過要排序的數列,一次比較兩個元素,

如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。*/

void

bubble_sort

(char str,

int n)}}

}/*選擇排序:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,

然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。*/

void

selection_sort

(int a,

int n)}if

(min != i)}}

/*插入排序:它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,

找到相應位置並插入。插入排序在實現上,通常採用in-place排序

(即只需用到 的額外空間的排序),

因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。*/

void

insertion_sort

(int arr,

int len)

}/*希爾排序:也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。

希爾排序是基於插入排序的以下兩點性質而提出改進方法的:插入排序在對幾乎已經排好序的資料操作時,

效率高,即可以達到線性排序的效率;但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位*/

void

shell_sort

(int arr,

int len)

}/*歸併排序:把資料分為兩段,從兩段中逐個選最小的元素移入新資料段的末尾。可從上到下或從下到上進行。*/

//迭代法

intmin

(int x,

int y)

void

merge_sort

(int arr,

int len)

int* temp = a;

a = b;

b = temp;}if

(a != arr)

free

(b);

}//遞迴法

void

merge_sort_recursive

(int arr,

int reg,

int start,

int end)

void

merge_sort

(int arr,

const

int len)

/*快速排序:在區間中隨機挑選乙個元素作基準,將小於基準的元素放在基準之前,

大於基準的元素放在基準之後,再分別對小數區與大數區進行排序。*/

//迭代法

typedef

struct _range range;

range new_range

(int s,

int e)

void

swap

(int

*x,int

*y)void

quick_sort

(int arr,

const

int len)

}while

(left <= right);if

(range.start < right) r[p++]=

new_range

(range.start, right);if

(range.end > left) r[p++]=

new_range

(left, range.end);}

}//遞迴法

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

public class sortalgorithm 插入排序 param numlist private void insertsort intnumlist numlist in temp 選擇排序 private void selectionsort intnumlist system.out...

c語言幾種排序方法

1.將輸入的一串數字存入陣列中,可先用字串的形式輸入,再通過轉化成整型數存入陣列中 int len 0,tmp 0 int a maxsize char string 100 printf 請輸入任意個數的整數,以回車結束 n gets string char str string while st...

c語言排序方法彙總

先更新到這裡,之後會持續更新 三連再看,月入百萬。在接下來的排序方法中,我們都採用4 1 2 6 5 3這個數列作為我們的栗子41 2653 1124 5362 1243 5631 2345 6412 3456 5123 456氣泡排序的本質就是每次將前n i個數中的最大值換到第n i 1位上去 如...