java常用排序演算法
一 順序查詢
前提條件:無
從所傳入集合的一段開始,順序掃描,並以此將掃描到的值與所傳如德key值進行比較。若有值與其相等,則表明查詢成功;若掃描結束後仍沒有值與key值相等,則表明查詢失敗。
示例程式碼:
public int SeqSearch(int[] r, int k){
// 在順序表R[0..n]中順序查詢關鍵字為k的結點,
// 成功時返回找到的結點位置,失敗時返回0
for(int i = r.length - 1; i >= 0; i--) //從表後往前找
{
if(r[i] == k)
{
return i; //若i為-1,表示查詢失敗,否則R[i]是要找的結點
}
}
return -1;
}
缺點:執行效率低
優點:實現方式簡單,比較容易好理解,對集合的資料結構沒什麼要求
二 二分查詢
前提條件:集合有序排列(遞增、遞減)
1 確定查詢範圍,獲取該區間的中間位置:middle=(low+high)/2
2 然後將待查的K值與R[mid]比較:若相等,則查詢成功並返回此位置,否則須確
定新的查詢區間,繼續二分查詢。
① 若R[mid] > K,則由陣列的有序性可知R[mid..n]均大於K,因此該結點必定是
在位置mid左邊的R[0..mid-1]中
② 若R[mid] < K,則要查詢的K必在mid的右邊的R[mid+1..n]中,下一次查詢是
針對新的查詢區間進行的。
3 因此,從初始的查詢區間R[1..n]開始,每經過一次與當前查詢區間的中點位置上的
結點關鍵字的比較,就可確定查詢是否成功,不成功則當前的查詢區間就縮小一半。
這一過程重複直至找到關鍵字為K的結點,或者直至當前的查詢區間為空(即查詢失
敗)時為止。
示例程式碼:
public int dichotomyMethod(int[] arrys,int keyValue){
int middle;
int low=0;
int high=arrys.length-1;
while(low<=high){
middle=(low+high)/2
if(arrys[middle]==keyValue){
return middle;
}else if(arrys[middle]<keyValue){
low=middle+1;
}else{
high=middle-1;
}
}
return -1;
}
相關文章
- 【演算法】Java實現七種常用排序演算法演算法Java排序
- 常用排序演算法排序演算法
- 常用排序演算法之桶排序排序演算法
- 用 Java 實現的八種常用排序演算法Java排序演算法
- Java常用的7大排序演算法彙總Java排序演算法
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 《排序演算法》——快速排序(Java)排序演算法Java
- 八種常用排序演算法排序演算法
- 常用演算法-選擇排序演算法排序
- 常用演算法-插入排序演算法排序
- 常用排序演算法總結排序演算法
- 排序演算法-Java排序演算法Java
- 排序演算法-Java實現快速排序演算法排序演算法Java
- JavaScript實現常用排序演算法JavaScript排序演算法
- 幾種常用的排序演算法排序演算法
- python 常用的排序演算法Python排序演算法
- js中常用的演算法排序JS演算法排序
- 常用排序演算法總結(1)排序演算法
- 常用排序演算法總結(2)排序演算法
- C++常用排序演算法 (轉)C++排序演算法
- Java排序演算法之氣泡排序Java排序演算法
- 排序演算法:Java實現希爾排序排序演算法Java
- java:快速排序演算法與氣泡排序演算法Java排序演算法
- php常用的四種排序演算法PHP排序演算法
- 常用排序演算法之JavaScript實現排序演算法JavaScript
- java常用演算法Java演算法
- 排序演算法 Java實現排序演算法Java
- 排序演算法Java實現排序演算法Java
- java選擇排序演算法Java排序演算法
- Java常見排序演算法之插入排序Java排序演算法
- Java中三種常用的排序方法Java排序
- 簡述幾種常用的排序演算法排序演算法
- 常用的比較排序演算法總結排序演算法
- 常用的 PHP 搜尋排序算演算法PHP排序演算法
- python實現常用五種排序演算法Python排序演算法
- Java常用演算法原理剖析Java演算法
- 《排序演算法》——堆排序(大頂堆,小頂堆,Java)排序演算法Java
- Java實現氣泡排序和插入排序演算法Java排序演算法