真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java寫(xiě)二分查找代碼 java實(shí)現(xiàn)二分查找

求一個(gè)java的二分查找的程序代碼

//你那程序太難改了,每個(gè)方法都單職責(zé)啊

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供洪山企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站制作、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為洪山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。

public?class?Test6?{

//二分查找

public?static?int?findPos(int[]?a,int?key)?{

int?start=0;

int?end=a.length-1;

int?temp=0;

while(startend){

int?mid=(start+end)/2;

if(keya[mid]){

start=mid+1;

temp=start;

}else?if(keya[mid]){

end=mid-1;

temp=end;

}else?{

return?mid;

}

}

return?temp;

}

public?static?void?main(String[]?args)?{

int[]array={1,4,6,7,10,11,23,78};

System.out.println(findPos(array,?0));

}

}

二分查找的代碼怎么寫(xiě)(其中2種)?

二分查找是一種在有序數(shù)組中查找指定元素的算法,它的基本思想是:每次將查找區(qū)間縮小一半,直到找到目標(biāo)元素或者確定目標(biāo)元素不存在為止。

下面是兩種寫(xiě)法:

遞歸版本

def binary_search(array, target, low, high):

if low high:

return -1

mid = (low + high) // 2

if array[mid] == target:

return mid

elif array[mid] target:

return binary_search(array, target, low, mid-1)

else:

return binary_search(array, target, mid+1, high)

# 調(diào)用方法

index = binary_search(array, target, 0, len(array)-1)

循環(huán)版本

def binary_search(array, target):

low, high = 0, len(array) - 1

while low = high:

mid = (low + high) // 2

if array[mid] == target:

return mid

elif array[mid] target:

high = mid - 1

else:

low = mid + 1

return -1

# 調(diào)用方法

index = binary_search(array, target)

在這里,array 是待查找的有序數(shù)組,target 是要查找的元素,low 和 high 分別表示查找區(qū)間的左右端點(diǎn)。如果找到了目標(biāo)元素,函數(shù)會(huì)返回其在數(shù)組中的下標(biāo);如果沒(méi)有找到,函數(shù)會(huì)返回 -1。

用Java語(yǔ)言編寫(xiě)對(duì)整型數(shù)組進(jìn)行二分查找的程序。

public class BinarySearchDemo {

public static void main(String[] args) {

int[] a = new int[]{1,5,7,9,11,18,23,48,69};

int point = new BinarySearchDemo().binarySearch(a, 23);

if(point == -1)

System.out.println("在數(shù)組中未查找到數(shù)23");

else

System.out.println("數(shù)字23是數(shù)組中第 " + (point + 1) + " 位數(shù)");

}

/**

* 二分法查找一個(gè)整數(shù)在整型數(shù)組中的位置

*

* 算法思路:首先得到數(shù)組a的最小值和最大值的下標(biāo),分別是:low和high,接著求出值位于數(shù)組中間那個(gè)數(shù)的下標(biāo)middle

* 然后再將這個(gè)middle對(duì)應(yīng)的數(shù)組中的數(shù)和待查找的數(shù)num進(jìn)行比較,如果相等,則表示已查找到,如果num a[middle]

* 則說(shuō)明num位于a[low]和a[middle]之間,于是將a[middle - 1]設(shè)為較大值,繼續(xù)求出此時(shí)對(duì)應(yīng)的a[middle],

* 再進(jìn)行比較,其他情況可依次類(lèi)推。一直到low=high,如果此時(shí)還沒(méi)有在數(shù)組a中查找到,則說(shuō)明該數(shù)組a中沒(méi)有值num,返回-1

*

* @param a 給定的整型數(shù)組

* @param num 待查找的數(shù) num

*

* @return 返回整數(shù)num在數(shù)組a中的位置下標(biāo),如果未查找到則返回-1

* */

public int binarySearch(int[] a,int num){

int low = 0;

int high = a.length - 1;

while(low = high){

int middle = (low + high) / 2;

if(num == a[middle])

return middle;

else if(num a[middle])

high = middle - 1;

else

low = middle + 1;

}

return -1;

}

}

程序基本上就是這樣了,其中注釋中有詳細(xì)的解釋說(shuō)明


當(dāng)前文章:java寫(xiě)二分查找代碼 java實(shí)現(xiàn)二分查找
文章URL:http://weahome.cn/article/doiisje.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部