标签:
一.有序数组的折半查找
【步骤】
① low=0,high=length-1; //初始值
② 当low>high时,返回查找失败信息
③ low<=high时,mid=(low+high)/2
a.若key<a[mid],high=mid-1; //查找在左半区
b.若key>a[mid],low=mid+1; //查找在右半区
c.若key=a[mid],返回mid //查找成功
【算法实现】
public int binarySearch(int[] a,int key) { int len=a.length; int low=0; int high=len-1; while(low<=high) { int mid=(low+high)/2; if(a[mid]<key) { //在右半区 low=mid+1; }else if(a[mid]>key) { //在左半区 high=mid-1; }else { return mid; //查找成功 } } return -1; //查找失败 }
二.快速排序
【基本思想】
1.选择一个基准元素,通常选择第一个或者最后一个元素
2.通过一趟排序将待排序的记录分成两个部分,其中一部分都比基准元素小,另一部分都比基准元素大
3.将基准元素放在排好序的正确位置
4.分别对两部分采取同样的排序,直到整个记录有序
标签:
原文地址:http://www.cnblogs.com/hwu2014/p/4442612.html