二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、.....
分类:
编程语言 时间:
2014-10-31 22:02:38
阅读次数:
195
声明:本文是对 xuetangx清华大学 丁俊晖 老师数据结构 课程的个人总结。说到有序向量的查找算法,首先蹦入脑海的肯定是二分查找算法。然后,即便是简单的二分查找也没有想象的那么简单。首先考虑一些特殊情形:1、查找的元素不存在; 2、要查找的元素值存在多个。当然,对于不存在的情况,我们可以简单的返...
分类:
编程语言 时间:
2014-10-31 21:55:51
阅读次数:
265
题目描述:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:采用类似折半查找的方式找到当前根节点,则当前根节点左边的属于它的左子树部分,当前根节点右边的属于它的右子树部分。再采用同样的方法,递归地对当前根节点的左右子树做相同的处理。
...
分类:
其他好文 时间:
2014-10-30 19:22:04
阅读次数:
197
这是letcode上的一道题目 Leetcode: Find Minimum in Rotated Sorted Array
一、什么是旋转数组呢,就是一个有序的数组,在从某一个位置开始,旋转到数组的另一端,例如:0 1 2 3 4 5 6 -> 4 5 6 0 1 2 3
二、使用暴力的方式就是遍历这个数组,算法的复杂度就是O(N),但是根据一般的经验提到有序,就会考虑到使用二分将算法的复杂度降低到O(logn),当然这个题目也不例外,但是如何利用二分去求解呢,毕竟不是全部有序。...
分类:
编程语言 时间:
2014-10-29 19:25:58
阅读次数:
200
理论部分,参考博文:http://blog.csdn.net/hguisu/article/details/75582491.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类...
分类:
移动开发 时间:
2014-10-29 13:02:51
阅读次数:
213
http://www.cnblogs.com/vanezkw/archive/2012/06/29/2569470.htmlJDK里面的二分法实现。二分法的实现有多种今天就给大家分享两种。一种是递归方式的,一种是非递归方式的。先来看看一些基础的东西。1、算法概念。二分查找算法也称为折半搜索、二分搜索...
分类:
编程语言 时间:
2014-10-28 23:52:27
阅读次数:
231
简单地用递归的方法实现了二分查找算法,适用于数组。二分查找算法的前提条件是数组本身是有序的,比如int arr[6] = {2, 3, 5, 7, 11, 13}; 1 int 2 BinarySearch(int arr[], int key, int left, int right) 3 { 4...
分类:
其他好文 时间:
2014-10-26 22:47:44
阅读次数:
232
顺序查找二分法查找分块查找散列表查找(哈希表)顺序查找的基本思想:从表的一端开始,顺序扫描表,依次将扫描到的结点关键字和给定值(假定为a)相比较,若当前结点关键字与a相等,则查找成功;若扫描结束后,仍未找到关键字等于a的结点,则查找失败。说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就...
分类:
编程语言 时间:
2014-10-26 21:12:22
阅读次数:
278
排序算法:(1)冒泡排序 1 $arr = array(15,8,20,50,37,85,10,5,11,4); 2 //冒泡排序 3 function maoPao($arr){ 4 for($i = 0; $i $arr[$j+1]){ 7 $t...
分类:
编程语言 时间:
2014-10-26 18:13:37
阅读次数:
158