排序查詢演算法集合
//氣泡排序 主要是交換位置
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...