本文目錄一覽:
- 1、java 二分法排序
- 2、怎麼計算java二分法查找的比較次數
- 3、java程序 二分法查找一個數
- 4、Java基礎 遞歸二分法
- 5、java程序 二分法查找一個數
- 6、java二分法查找重複數字的下標?
java 二分法排序
首先取第一個12,其它元素比12小的放左邊,比12大的放右邊,這樣2,11,12,56,77,34
原來的數組就變成了兩個部分2,11,12和56,77,34
兩個方法按照上面的步驟遞歸排,比如第二部分56,77,34
取第二部分的第一個56,比它小的放左邊,比它大的放右邊,這樣34,56,77
這樣1個數組,分成2各部分,再分成4各部分,一直下去,直到排完
要用到遞歸,二分法就是這樣
怎麼計算java二分法查找的比較次數
您好,我來為您解答:
算法:當數據量很大適宜採用該方法。採用二分法查找時,數據需是有序不重複的。 基本思想:假設數據是按升序排序的,對於給定值 x,從序列的中間位置開始比較,如果當前位置值等於 x,則查找成功;若 x 小於當前位置值,則在數列的前半段中查找;若 x 大於當前位置值則在數列的後半段中繼續查找,直到找到為止。
希望我的回答對你有幫助。
java程序 二分法查找一個數
public
class
Lookup
{
/**
*
@param
args
*/
public
static
void
main(String[]
args)
{
//
TODO
Auto-generated
method
stub
/**
*
二分法查找
*/
int
a[]={23,45,98,100,110,120,140};
int
search=120;//記錄要查找的元素
int
lower=0;//記錄第一個元素
int
temp=a.length-1
;
int
index=-1;
while(lower=temp){
index
=
(lower+temp)/2;//記錄中間元素,用兩邊之和除2.
int
currentValue=a[index];
if(currentValue==search){//如果得到的數與要查找的數相等則break退出;
break;
}else
if(currentValuesearch){//如果得到的數要小於查找的數、就用下標加1;否則減一
lower=index+1;
}else{
temp
=
index-1;
}
}
if(lower=temp){
System.out.println(search+”在數組中第:”+(index+1)+”位”);
}else{
System.out.println(“裡面沒有這個元素”);
}
}
}
Java基礎 遞歸二分法
如果都不滿足條件呢 可能你能確定一定會滿足其中一個 可是程序不能確定是不是一定會滿足其中一個 又不知道如果不滿足要返回什麼 所以報錯啦
java程序 二分法查找一個數
public class Lookup {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 二分法查找
*/
int a[]={23,45,98,100,110,120,140};
int search=120;//記錄要查找的元素
int lower=0;//記錄第一個元素
int temp=a.length-1 ;
int index=-1;
while(lower=temp){
index = (lower+temp)/2;//記錄中間元素,用兩邊之和除2.
int currentValue=a[index];
if(currentValue==search){//如果得到的數與要查找的數相等則break退出;
break;
}else if(currentValuesearch){//如果得到的數要小於查找的數、就用下標加1;否則減一
lower=index+1;
}else{
temp = index-1;
}
}
if(lower=temp){
System.out.println(search+”在數組中第:”+(index+1)+”位”);
}else{
System.out.println(“裡面沒有這個元素”);
}
}
}
java二分法查找重複數字的下標?
package pers.ly.javase.algorithm;import java.util.Arrays;/**
* 二分法查找
* @author: Lu Yang
* @date: 2019-01-23 10:50:37
*
*/public class BinarySearch {
public static void main(String[] args) {
Integer[] arr = {10,50,30,40,10,80,90,70,60,40,100,10};
// 數組排序 – 二分法必要條件
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(binarySearch(arr,50));
}
/**
*
* @author: Lu Yang
* @date: 2019-01-23 11:44:01
* @param arr 數組
* @param value 數組元素值
* @return
*
*/
public static Integer binarySearch(Integer[] arr, Integer value) {
// 定義數組開始位置
Integer start = 0;
// 定義數組結束位置(arr.length是計算數組從1開始的總長度,arr.length-1計算數組從0開始的總長度)
Integer end = arr.length – 1;
// 開始位置 = 結束位置
while (start = end) {
// 定義數組的中心位置(開始位置+結束位置)/2
Integer mid = (start + end) / 2;
// 判斷數組mid位置值(當前數據中間位置值)是否小於傳過來的值
if (arr[mid] value)
// 如果小於傳過來的值,數組開始位置則定義中間位置下標+1
start = mid + 1;
// 判斷數組mid位置值(當前數據中間位置值)是否大於傳過來的值
if (arr[mid] value)
// 如果大於傳過來的值,數組結束位置則定義中間位置下標-1
end = mid – 1;
if (arr[mid] == value)
return mid;
}
return -1;
}}
原創文章,作者:EFMVS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315784.html