查找和排序是最基础也是最重要的两类算法,熟练地掌握这两类算法,并能对这些算法的性能进行分析很重要,这两类算法中主要包括二分、快速、归并等等。
1. 顺序查找
顺序查找又称线性查找。它的过程为:从查找表的最后一个元素开始逐个与给定关键字比较,若某个记录的关键字和给定值比较相等,则查找成功,否则,若直至第一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录查找不成功,它的缺点是效率低下
。
2. 二分查找
二分查找又称折半查找,对于有序表来说,它的优点是比较次数少,查找速度快,平均性能好
。
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。
二分查找的时间复杂度为O(logn)
static int funBinSearch(int[] array, int data) {
if (array == null || array.length == 0) {
return -1;
}
int start = 0;
int end = array.length - 1;
int mid;
while (end >= start) {
mid = (start + end) / 2;
if (data == array[mid]) {
return mid;
} else if (data > array[mid]) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
}
网友评论