冒泡,快速,直接插入,桶排序

2021-09-25 20:48:00 字數 1493 閱讀 6009

氣泡排序的基本思想:每次比較兩個相鄰的元素,如果他們順序錯誤把他們交換。

演算法步驟

1)比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

3)針對所有的元素重複以上的步驟,除了最後乙個。

4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

void

bubble_sort

(int num,

int len)}}

}

演算法步驟

(1)以集合第乙個元素為基準,進行劃分,將小與它的元素放在它左邊,將大於它的元素放在它右邊

(2)將左邊元素的區間、右邊元素的區間遞迴進行劃分

(3)重複(1)(2),直至子區間不能再劃分為止

實現**

void

quicksort

(int a,

int left,

int right)

a[i]

= t;

//遞迴執行劃分

quicksort

(a, left, i -1)

;quicksort

(a, i +

1, right)

;}

基本思想:將排序區間分成有序區和無序區兩個區間,每次選取無序區的第乙個元素插入到有序區

演算法步驟:

(1)選取無序區中第乙個元素i

(2)將i與有序區中元素j(0 <= j <= i-1)比較,尋找插入位置,同時移動元素

(3)將該元素插入合適位置

(4)重複(1)(2)(3)直至無序區長度為0

void

insertsort

(int a,

int n)

a[j +1]

= t;

//插入元素到有序區

}}

實現原理

假定有1-100個編號的桶(也就是定義乙個長度為100的整型一維陣列),每輸入乙個數字·就在對應的桶上插乙個小旗(也就是對應下標的桶加1次),如果這個數字出現了n次就在對應桶上插n個小旗,當所有數輸入完畢時,只需要從下標1開始找那些數字是1,如果是1就列印1次,是2就列印2次,是多少就列印多少次。

**實現

void

test

(int a,

int n)

;for

(int i=

0; i++i)

s[a[i]]++

;for

(int i=

0; i<10;

++i)

for(

int j=

0; j;++j)

printf

("%d "

,i);

}

《啊哈!演算法》強烈推薦!

排序(冒泡 直接插入 選擇)

從小到大 int j,temp for int i 0 i arr.length 1 i else if j將乙個記錄插入到已排好序的有序表中,從而得到乙個新的 記錄數增1的有序表,再從剩下的關鍵字中選取下乙個插入物件 for int i 0 i arr.length i arr j temp co...

資料結構排序,冒泡,快速,直接選擇,直接插入,希爾

交換排序 1.氣泡排序 public class sort 氣泡排序 public void bubble int a public static void main string args sort bs new sort bs.bubble a for int i 0 i 2.快速排序 第一步,...

排序之 冒泡,直接插入,選擇排序

學過程式設計的應該都知道,排序演算法有很多種,想把每種演算法的基本思想搞懂弄清確實得下一番功夫,今天我先介紹幾種簡單的,氣泡排序,直接插入排序和選擇排序,一定要弄清楚每種方法基本思想的差異。1,氣泡排序 公升序 基本思想 相鄰的兩個元素進行比較,如果前乙個元素大於後乙個元素,則交換二者位置,接著繼續...