經典排序及二分查詢法

2021-10-05 07:12:42 字數 2239 閱讀 3354

氣泡排序思想:

冒泡排氣泡排序思想:通過外層迴圈控制所要比較的輪數,內層迴圈控制每輪所要比較的次數,每輪都將陣列中的元素j和它相鄰的元素j+1進行比較,若果arr[j] < arr[j + j],則將兩個元素位置進行交換,就如同冒泡一樣,大的泡泡會不斷的向上浮.

public

static

void

bubblesort

(int

arr)}}

}

選擇排序思想:

每一次迴圈,從中選出最小值或者最大值,將最小值或最大值放在陣列的0索引位置,後續的比較就可以忽略已經篩選出來的最小值或者最大值.

public

static

void

selectsort

(int

arr)}}

}

快速排序想:

1. 先設立乙個基準值arrbenchmark,一般會將陣列的0索引位置的值設為基準值.

2. 從陣列的左側和陣列的右側分別開始和基準值進行比較,設立乙個i值(為0索引)每次滿足迴圈條件(arr[i] <= arr[benchmark])的時候進行i++遞增,再設立乙個j值(陣列最大索引)每次滿足迴圈條件(arr[j] >= arr[benchmark])的時候進行j–遞減.

3. 當右側的值(arr[i])大於基準值(arr[benchmark])的時候,跳出當前迴圈,當左側的值(arr[j])小於基準值(arr[benchmark])的時候,跳出當前迴圈,讓後將左側和右側這兩個跳出迴圈的值進行交換,以此方式進行比較,直到i == j 的時候,將基準值和arr[i]進行交換位置,這樣第一遍迴圈結束的時候,基準值arr[benchma]左側的全部小於基準值,右側的值全部大於基準值.

4. 利用遞迴思想,再分別將基準值左側和基準值右側的陣列進行排序,直到整個陣列arr排序完畢.

public

static

void

quicksort

(int

arr,

int low,

int high)

int benchmark = arr[low]

;int i = low;

int j = high;

while

(i < j)

// 再從左側開始找比基準值大的數,如果找到跳出當前迴圈

while

(arr[i]

<= benchmark && i < j)

// 將比基準值大的和比基準值小的元素的位置進行交換

if(i < j)

// 將基準值和 i == j 的位置進行交換

arr[low]

= arr[i]

; arr[i]

= benchmark;

//利用遞迴思想,將基準值左右兩側繼續排序,直到排序完成

quicksort

(arr, low, j -1)

;quicksort

(arr, j +

1, high);}

}

二分查詢思想:

1. 該陣列中的元素必須是有序的.

2. 首先定義三個值,最大索引max,最小索引min,中間索引mid.

3. 進行判斷,如果該元素的值大於中間索引的值(arr[mid]),將最小索引改為min = mid + 1.

4. 如果該元素的值小於中間索引值(arr[mid]),將最大索引值改為 max = mid - 1.

5. 1.如果該值的索引等於中間索引mid,直接返回mid

6. 如果本次迴圈沒有找到該值的索引,將mid重新賦值,繼續查詢,當迴圈結束也沒有找到該值的索引時,進行return.

public

static

intbinarysearch

(int

arr,

int number)

else

if(number < arr[mid]

)else

// 因為最小索引min和最大索引max被重新定義,中間索引也要被重新定義

mid =

(max + min)/2

;}// 當查詢不到值value時候,直接返回-1

return-1

;}

檔案排序及二分查詢法與氣泡排序法

char fputs char s,int n,file fp int fputs char s,file fp fgets正常時返回讀取字串的首位址,出錯或檔案尾,返回null。fputs正常時返回寫入的最後乙個字元,出錯返回eof。define crt secure no warnings in...

二分查詢法及改進

二分查詢演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到...

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...