排序查詢演算法集合

2021-10-08 20:10:45 字數 1622 閱讀 4667

排序查詢演算法集合

//氣泡排序  主要是交換位置

public

void

bubblesort

(integer[

] arr,

int n)

for(

int i =

0; i < n;

++i)}if

(!flag)}}

//選擇我排序 主要是假定最小值是arr[j]

private

void

select

(integer[

] arr)

}//在內層迴圈結束,也就是找到本輪迴圈的最小的數以後,再進行交換

if(i != k)}}

//快速排序 主要是以是更換start和end的位置

private

void

quicksort

(integer[

] arr,

int start,

int end)

//再看左邊,依次往右遞增 同右邊一樣

while

(temp >= arr[i]

&& i < j)

//如果滿足條件則交換

int z = arr[i]

;int y = arr[j]

;//左右哨兵 交換資料(互相持有對方的資料)

arr[i]

= y;

arr[j]

= z;

}//這時 跳出了 「while (i//說明 i=j 左右在同一位置

//最後將基準為與i和j相等位置的數字交換

arr[start]

= arr[i]

;//或 arr[start] = arr[j];

arr[i]

= temp;

//或 arr[j] = temp;

/** #i=j

* 這時 左半數組<(i或j所在索引的數)《右半陣列

* 也就是說(i或j所在索引的數)已經確定排序位置, 所以就不用再排序了,

* 只要用相同的方法 分別處理 左右陣列就可以了

* */

//遞迴呼叫左半數組

quicksort

(arr, start, j -1)

;//遞迴呼叫右半陣列

quicksort

(arr, j +

1, end);}

/** * 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。 【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。

** @param array 有序陣列

* @param searchkey 查詢元素

* @return searchkey的陣列下標,沒找到返回-1

* 主要是找到middle的值

*/public

static

intbinarysearch

(int

array,

int searchkey)

else

if(searchkey < array[middle]

)else

}return-1

;}

排序演算法集合

氣泡排序 public static int maopao int param return param 快速排序 public static int quick int param,int left,int right return param 分割陣列,相當於分治演算法,快速排序的核心 priv...

排序演算法集合

從未排序的集合中找出乙個元素,依次與已排序的集合元素進行比較,如果滿足規則,小於或是等於,直接插入,依次迴圈,直至待排序集合元素為空。清單.插入排序 直接插入排序 param arr public void insertsort int arr 從待排序元素集合中,找出其中最大或是最小的元素,插入到...

排序演算法集合

就按照 演算法導論 裡面的順序寫吧 原理都不講了,只是貼一下 給參考。其實書上也寫得很清楚,我只是用c 實現出來而已。1.歸併排序 merge sort include include include include include using namespace std 二路歸併排序 遞迴實現 v...