重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
二分
站在用户的角度思考问题,与客户深入沟通,找到岱岳网站设计与岱岳网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、网站空间、企业邮箱。业务覆盖岱岳地区。
package stack;
public class HalfSearch {
static int a[]={1,3,5,98,8,9,4,38,12};
public static int halfSeacrh(int[] a,int number){//二分查找
HalfSearch hs=new HalfSearch();
hs.bubbleSort(a);
int startPostion=0;
int endPostion=a.length-1;
int postion=(startPostion+endPostion)/2;
while(startPostionendPostion){
if(a[postion]==number)
return postion;
else if(a[postion]number){
startPostion=postion+1;
}
else if(a[postion]number){
endPostion=postion-1;
}
postion=startPostion+endPostion;
}
return -1;
}
public static void bubbleSort(int a[]){
int temp=0;
for(int i=0;ia.length;i++){
for(int j=i+1;ja.length;j++){
if(a[i]a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
public static void main(String[] args) {
System.out.println(halfSeacrh(a,8));
}
}
快速:templateclass elemtype
void arrayelemtype::sort(int low,int high)
{
if(low=high) return;
int lo=high+1;
elemtype elem=_ia[low];
for( ; ; ) {
while(_ia[++lo]elem lohigh);
while(_ia[--hi]elem hilo);
if(lohi) swap(lo,hi);
else break;
}
swap(low,hi);
sort(low,hi-1);
sort(hi+1,high);
}
Go语言标准库中提供了sort包对整型,浮点型,字符串型切片进行排序,检查一个切片是否排好序,使用二分法搜索函数在一个有序切片中搜索一个元素等功能。
关于sort包内的函数说明与使用,请查看
在这里简单讲几个sort包中常用的函数
在Go语言中,对字符串的排序都是按照字节排序,也就是说在对字符串排序时是区分大小写的。
二分搜索算法
Go语言中提供了一个使用二分搜索算法的sort.Search(size,fn)方法:每次只需要比较㏒₂n个元素,其中n为切片中元素的总数。
sort.Search(size,fn)函数接受两个参数:所处理的切片的长度和一个将目标元素与有序切片的元素相比较的函数,该函数是一个闭包,如果该有序切片是升序排列,那么在判断时使用 有序切片的元素 = 目标元素。该函数返回一个int值,表示与目标元素相同的切片元素的索引。
在切片中查找出某个与目标字符串相同的元素索引
使用二分查找需要数组是有序的。
比如在升序排列的数组中,将数组中间位置的数据与目标数据比较,如果相等则查找成功;否则按照中间位置把数组分为两部分,如果中间位置大于目标数据,则在前半部分中以取中心点的方式继续比较,否则查找后半部分。