氣泡排序(bubble sort)就是一種交換排序,它的思想就是兩個元素進行比較,如果是反序則交換,直到沒有反序的元素為止。
選擇排序#include
//兩個數進行交換的函式
void
swap
(int
*num1,
int*num2)
//氣泡排序的具體實現
void
bubblesort
(int arr,
int len)}}
}//列印函式
void
(int arr,
int len)
}int
main
(void);
//求出陣列的長度
int len =
sizeof
(arr)
/sizeof
(int);
printf
("排序之前:\n");
(arr, len)
;bubblesort
(arr, len)
;printf
("\n");
printf
("排序之後:\n");
(arr, len)
;return0;
}
選擇排序(selection sort)的思想就是在一直的元素中找到最大(小)的值放在起始的位置,再從剩餘的元素中找到最大(小)的元素放在剛剛找到的最值得後面,以此類推,直到所有的元素全部排序結束。
快速排序#include
void
swap
(int
*num1,
int*num2)
void
(int arr,
int len)
}void
selectionsort
(int arr,
int len)}if
(i != min)}}
intmain
(void);
int len =
sizeof
(arr)
/sizeof
(int);
printf
("排序之前:\n");
(arr, len)
;selectionsort
(arr, len)
;printf
("\n");
printf
("排序之後:\n");
(arr, len)
;return0;
}
a. 快速排序(quick sort)也被稱為劃分排序或分割槽排序,它是目前所有的內部排序方法中速度最快的一種,快速排序是對起泡排序的一種改進。
b. 快速排序的思想是:選取乙個基準數(一般取第乙個數),將比基準數小的數放到基準數的前面,比基準數大的數交換到基準數的後面。經歷一趟排序之後基準數左面都是比它小的數,右面都是比它大的數。對左右兩個區間重複之前的操作,直到每個區間只有乙個元素為止。
參#include
void
(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");
(arr, len)
;quicksort
(arr,
0, len -1)
;printf
("\n");
printf
("排序之後:\n");
(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 冒泡法還有第二種形式,或者叫沉底法也...