今天起,我要对数据结构和基本的算法进行一些简单的复习,并在复习的基础上对其进行深入的挖掘。这篇文章先对二分查找进行一个简要的复习,在之后的文章中会对其进行深入的学习。
二分查找又叫折半查找,是最基本的几种查找算法之一。简单的看,二分法查找主要应用于在一个有序数列中进行元素的查找,其基本思路是,先用我们要查找的元素与这个有序数列中的中间位置的元素进行比较(在此我们姑且称这个元素为“中间...
分类:
编程语言 时间:
2016-05-12 15:26:03
阅读次数:
210
根据排序算法,可以解决一些小案例。举例如下:
/*
* 把字符串中的字符进行排序。
* 举例:"dacgebf"
* 结果:"abcdefg"
*
* 分析:
* A:定义一个字符串
* B:把字符串转换为字符数组
* C:把字符数组进行排序
* D:把排序后的字符数组转成字符串
* E:输出最后的字符串
*/
public class Arr...
分类:
编程语言 时间:
2016-05-12 13:08:43
阅读次数:
256
前面介绍了排序问题(见博客http://blog.csdn.net/qq_32059827/article/details/51362390);二分查找问题(见博客http://blog.csdn.net/qq_32059827/article/details/51363949)
接下来用一个类快速实现排序和二分查找。Arrays类
import java.util.Arr...
分类:
编程语言 时间:
2016-05-12 13:06:32
阅读次数:
223
查找和排序都是程序中经常用到的算法查找分为:顺序查找,二分查找、哈希表查找和二叉树排序查找。哈希表和二叉树查找的重点在于其数据结构。哈希表的主要优点是能够在O(1)的时间查找某一元素,是效率最高的查找方式。其缺点是需要额外的空间来实现哈希表。排序分为插入排序..
分类:
编程语言 时间:
2016-05-12 08:05:31
阅读次数:
294
二分查找 同义词 二分查找法一般指二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查 ...
分类:
其他好文 时间:
2016-05-10 23:07:01
阅读次数:
255
思路:基本方法:从头遍历一遍,时间复杂度为O(n),效率比较低,这里采用二分查找,找出中间元素与头,尾比较,如果中间元素比头元素大,说明这部分有序,最小值在后半部分,中间元素为头:如果中间元素比尾元素大,说明最小值在前部分。设定两个指针start和end分别指向数组的首..
分类:
编程语言 时间:
2016-05-09 07:19:55
阅读次数:
212
#include<iostream>
usingnamespacestd;
intfindx(int*xx,intx,intn)
{
//assert(xx);
intl=0;intr=n;intmid=r/2;
if(xx[l]==x)returnl;
if(xx[mid]==x)returnmid;
if(xx[r]==x)returnr;
if(xx[l]<xx[mid])r=mid;
elsel=mid;
if(xx[l]<x&&x<xx[r]);
e..
分类:
其他好文 时间:
2016-05-08 20:05:34
阅读次数:
255
对于二分来说,个人暂且将其分为整数型和实数型。 对整数型而言,一般问题对于(low<=high)条件的判断取等号即可,因为在while途中查找遇到可匹配的便break,比方说二分查找已排序的数列。但是有些问题并不是这样的,在此分为两类:取最大值的min,和取最小值的max。 对于前一种,要用<(即不 ...
分类:
其他好文 时间:
2016-05-08 18:08:01
阅读次数:
403
题意:找到第一个出问题的版本 二分查找,注意 mid = l + (r - l + 1) / 2;因为整数会溢出 ...
分类:
其他好文 时间:
2016-05-07 22:18:19
阅读次数:
291
问题: 一个有序数组,值有可能有负值,也有可能没有,现需要找出其中绝对值最小的值。 方法1: 遍历数组,找到绝对值最小值,时间复杂度O(n),n为元素个数。 方法2: 二分查找,因为数组有序,可以利用二分查找,时间复杂度O(logn)。 分析步骤: 如果第一个数为正数,说明整个数组没有负数,直接返回 ...
分类:
编程语言 时间:
2016-05-07 19:41:48
阅读次数:
499