排序演算法鍛鍊程式設計思維 冒泡,選擇,插入,快速,歸併

2022-06-07 15:54:13 字數 3009 閱讀 7780

冒泡,選擇,插入,快速,歸併這五個排序是所有程式語言初學者所遇到過的,可能在實際的程式設計應用中不會遇到,

但對於鍛鍊程式設計思維,還是有很好的作用。

氣泡排序

氣泡排序的就是讓大的數向後冒,讓小的數向前冒。通過前後兩個資料比較,不斷將大的元素移動到尾部。

1

public

static

void

main(string args) ;

4for(int i=0;i) 11}

12}13for(int

a:arr)

16 }

選擇排序

選擇排序就是把無序區的最小元素與首元素互換位置,然後將有序區的區間擴大一位,直到所有無序區都變成有序區。

1

public

static

void

main(string args) ;

4for(int i=0;i) 12}

13if(i!=k) 18}

19for(int

a:arr)

22 }

插入排序插入排序是把陣列分為有序區和無序區兩塊,然後將無序區的指定索引的數插入到有序區的指定位置,假設第0個元素是已經排序好的,無序區第一次迴圈從1開始遍歷,設定乙個temp,找到要插入的位置,把temp插入到有序區指定位置。

1

public

static

void

main(string args) ;

4int j=0;

5for(int i=1;i)

13 arr[j+1]=temp;14}

15}16for(int

a:arr)

19 }

快速排序快速排序主要思想方法有兩個:一趟排序和分治;一趟排序完成陣列的第一次排序,設定乙個鍵值data,找到對應正確的位置,data的值插進去;分治就是用分而治之的思想,將鍵值左右兩側分為兩個部分,再呼叫遞迴,將左邊的部分再分為兩個部分,將右邊的部分再分為兩個部分,依此類推,直到將陣列排列完。

1

public

static

void

main(string args) ;

4 quicksort(arr, 0, arr.length - 1);

5for (int

a : arr) 8}

910public

static

int partsort(int arr, int low, int

high)

19 arr[low] =arr[high];

20/**

21* 從high,也就是後面往前遍歷 找到比鍵值小的資料 插入到前面留下的空中 high位再次留下空來

22*/

2324

while (low < high && arr[low] <=data)

27 arr[high] =arr[low];

2829

}30 arr[low] =data;

31/*

32* 迴圈退出後 low和high重合 將將鍵值賦給第low,並將low返回

33*/

34return

low;35}

3637

public

static

void quicksort(int arr, int low, int

high)

4445 }

歸併排序歸併排序要點有兩個:對於兩個有序陣列的合併;遞迴思想。合併兩個有序陣列要定義乙個新陣列temp來存放合併後的陣列,並通過判斷條件讓新的陣列在合併後成為有序陣列。歸併的時候讓陣列呼叫自己,一步步將陣列的長度變小,當子陣列被分治到只有乙個元素的時候,子陣列也就是有序陣列,這時候可以呼叫合併有序陣列的方法,整個陣列也就完成了排序。

4 system.out.println("排好序的陣列:");

5for (int

e : a)

6 system.out.print(e + " ");78

}910//

兩路歸併演算法,兩個排好序的子串行合併為乙個子串行

11public

static

void merge(int a,int left,int mid,int

right)

2122

while(p1<=mid) tmp[k++]=a[p1++];//

如果第乙個序列未檢測完,直接將後面所有元素加到合併的序列中

23while(p2<=right) tmp[k++]=a[p2++];//

如果第二個序列未檢測完,直接將後面所有元素加到合併的序列中

2425

//複製回原陣列

26for (int i = left; i <=right; i++)

27 a[i]=tmp[i];28}

2930

31public

static

void mergesort(int a,int start,int

end)

40 }

選擇氣泡排序演算法

使用氣泡排序 package com.qixin.five public class bubblesort inttemp system.out.println 原有陣列內容 printarray array for inti 1 i array.length i system.out.printl...

選擇氣泡排序演算法

使用氣泡排序 package com.qixin.five public class bubblesort inttemp system.out.println 原有陣列內容 printarray array for inti 1 i array.length i system.out.printl...

選擇氣泡排序演算法

使用氣泡排序 package com.qixin.five public class bubblesort inttemp system.out.println 原有陣列內容 printarray array for inti 1 i array.length i system.out.printl...