分治算法的二分搜索JAVA_Java使用分治算法实现排序数索引功能示例【二分搜索】...

本文实例讲述了Java使用分治算法实现排序数索引功能。分享给大家供大家参考,具体如下:

/**

* Find the first q and return the index

* First method is brutal force

* Second may

* be Divid and Conquer

*

* @author open201

*

*/

public class Ono {

/**

* f(n) = s.length = n;

*

* @param s

* @param q

* @return

*/

public static int BrutalForceSearch(int[] s, int q) {

for (int i = 0; i < s.length; i++) {

if (q == s[i])

return i;

}

return -1;

}

/**

* f(n) = log(n)

*

* @param s

* @param q

* @return

*/

public static int DCSearch(int[] s, int q, int startIndex, int endIndex) {

if (startIndex > endIndex)

return -1;

else {

int mid = (startIndex + endIndex) / 2;

if (s[mid] == q)

return mid;

else {

if (s[mid] > q)

return DCSearch(s, q, startIndex,mid-1);

else

return DCSearch(s, q, mid+ 1,endIndex);

}

}

}

public static void main(String[] args) {

int [] s = new int[10000000];

for(int i = 0;i<10000000;i++){

s[i] = i;

}

int q = 10000000-1;

long startTime = System.currentTimeMillis();

System.out.println(BrutalForceSearch(s, q));

long endTime = System.currentTimeMillis();

System.out.println(endTime-startTime);

startTime = System.currentTimeMillis();

System.out.println(DCSearch(s, q, 0, s.length - 1));

endTime = System.currentTimeMillis();

System.out.println(endTime-startTime);

}

}

希望本文所述对大家java程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值