常見演算法的C語言實現

2021-10-10 09:36:42 字數 2596 閱讀 2723

氣泡排序(bubble sort)就是一種交換排序,它的思想就是兩個元素進行比較,如果是反序則交換,直到沒有反序的元素為止。

#include

//兩個數進行交換的函式

void

swap

(int

*num1,

int*num2)

//氣泡排序的具體實現

void

bubblesort

(int arr,

int len)}}

}//列印函式

void

print

(int arr,

int len)

}int

main

(void);

//求出陣列的長度

int len =

sizeof

(arr)

/sizeof

(int);

printf

("排序之前:\n");

print

(arr, len)

;bubblesort

(arr, len)

;printf

("\n");

printf

("排序之後:\n");

print

(arr, len)

;return0;

}

選擇排序

選擇排序(selection sort)的思想就是在一直的元素中找到最大(小)的值放在起始的位置,再從剩餘的元素中找到最大(小)的元素放在剛剛找到的最值得後面,以此類推,直到所有的元素全部排序結束。

#include

void

swap

(int

*num1,

int*num2)

void

print

(int arr,

int len)

}void

selectionsort

(int arr,

int len)}if

(i != min)}}

intmain

(void);

int len =

sizeof

(arr)

/sizeof

(int);

printf

("排序之前:\n");

print

(arr, len)

;selectionsort

(arr, len)

;printf

("\n");

printf

("排序之後:\n");

print

(arr, len)

;return0;

}

快速排序

a. 快速排序(quick sort)也被稱為劃分排序或分割槽排序,它是目前所有的內部排序方法中速度最快的一種,快速排序是對起泡排序的一種改進。

b. 快速排序的思想是:選取乙個基準數(一般取第乙個數),將比基準數小的數放到基準數的前面,比基準數大的數交換到基準數的後面。經歷一趟排序之後基準數左面都是比它小的數,右面都是比它大的數。對左右兩個區間重複之前的操作,直到每個區間只有乙個元素為止。

#include

void

print

(int arr,

int len)

}void

quicksort

(int arr,

int start,

int end)

if(start < end)

//從左向右找比基準數大的元素

while

(start < end && arr[start]

<= temp)

if(start < end)

}//把基準數放到start和end重合的位置

arr[end]

= temp;

//下面兩行**使用了遞迴的思想

//對左半部分快排

quicksort

(arr, i, end -1)

;//此處用初始的start即i

//對右半部分進行快排

quicksort

(arr, end +

1,j)

;//此處用初始的end即j}}

intmain

(void);

int len =

sizeof

(arr)

/sizeof

(int);

printf

("排序之前:\n");

print

(arr, len)

;quicksort

(arr,

0, len -1)

;printf

("\n");

printf

("排序之後:\n");

print

(arr, len)

;return0;

}

C語言實現幾種常見排序演算法

worker.c created on 2010 7 1 author panfei include void swap int x,int y 插入排序 公升序 void insertsort int arr,int size arr j 1 to insert 選擇排序 降序 void sele...

C語言實現幾種常見排序演算法

氣泡排序最好的時間複雜度為 o n 氣泡排序總的平均時間複雜度為 o n 2 氣泡排序演算法的原理如下 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除...

幾種常見排序演算法的c語言實現

1 冒泡法1 其原理為從a 0 開始,依次將其和後面的元素比較,若a 0 a i 則交換它們,一直比較到a n 同理對a 1 a 2 a n 1 處理,即完成排序。cpp view plain copy void bubble int a,intn 2 冒泡法2 冒泡法還有第二種形式,或者叫沉底法也...