黑马程序员技术交流社区
标题:
如何用二分法对数组进行排序,求例子
[打印本页]
作者:
明天你好
时间:
2014-2-26 12:29
标题:
如何用二分法对数组进行排序,求例子
如何用二分法对数组进行排序,求例子
作者:
乔青山
时间:
2014-2-26 18:33
public static int halfSearch(int[] arr,int x){
Arrays.sort(arr); //对数组进行排序
int min = 0;
int max = arr.length-1; //定义min和max确定每次查找的数组范围,在这个范围中取中间角标进行对比
while(min<=max){
int mid = (min+max)/2; //每次查找的角标
if(arr[mid]==x){
return mid;
}else if(arr[mid]>x){
max = mid-1; //角标处的数大,说明在该角标左侧,max=max-1
}else{
min = mid+1; //角标处的数小,说明在该角标的右侧,min=min+1
}
}
return -1; //数组中没有该整数,返回-1
}
作者:
不再散步
时间:
2014-2-26 23:28
楼主是指快速排序+二分查找么?
作者:
绿@Live
时间:
2014-2-28 15:37
class HalfSearch
{
public static void main(String[] args)
{
int [] arr ={12,23,25,34,56,67,78,80};
int index= halfSearch(arr,56);
System.out.println("index="+index);
}
public static int halfSearch(int[] arr,int key)
{ int min=0;
int max=arr.length-1;
int mid=0;
while (min<=max)
{
mid=(mid+max)/2;
if ( key==arr[mid])
{
return mid;
}
else if (key>arr[mid])
{
min=mid+1;
}
else if (key<arr[mid])
{
max=mid-1;
}
}
return -1;
}
}
查找56(角标为4),运行结果为:index=4
复制代码
作者:
李金中
时间:
2014-2-28 15:42
二分查找 不是 排序算法,而是查找,你可以百度,很详细。
作者:
syw02014
时间:
2014-3-1 09:10
这个算法希望能帮到你:
public static int binarySearch(int[] a, int value)
{
int low = 0;
int high = a.length-1;
while(low <= high)
{
mid = (low+high)/2;
if (a[mid] == value)
return mid;
else if (a[mid] > value)
high = mid-1;
else
low = mid +1;
}
return -1;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2