本月博客排行
-
第1名
龙儿筝 -
第2名
johnsmith9th -
第3名
wy_19921005 - zysnba
- sgqt
- lemonhandsome
年度博客排行
-
第1名
宏天软件 -
第2名
青否云后端云 -
第3名
龙儿筝 - gashero
- wallimn
- vipbooks
- benladeng5225
- wy_19921005
- fantaxy025025
- qepwqnp
- e_e
- 解宜然
- zysnba
- ssydxa219
- sam123456gz
- javashop
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- gaojingsong
- wiseboyloves
- xiangjie88
- ranbuijj
- ganxueyun
- sichunli_030
- xyuma
- wangchen.ily
- jh108020
- lemonhandsome
- zxq_2017
- jbosscn
- Xeden
- luxurioust
- lzyfn123
- zhanjia
- forestqqqq
- johnsmith9th
- ajinn
- nychen2000
- wjianwei666
- hanbaohong
- daizj
- 喧嚣求静
- silverend
- mwhgJava
- kingwell.leng
- lchb139128
- lich0079
- kristy_yy
最新文章列表
庞果网的二分查找挑战
上周末在ITEYE上看到一个标题‘在充足时间下,只有百分之二十程序员能成功完成的二分查找’,当时心想,对于算法虽然基础不是很精通,但是基础的还没问题,抱着好奇心点了进去,原来是一个编程挑战,题目当然是实现二分查找,还有一个附属条件是当有多个值相同时,返回最小下标,看看时间,一个小时呢,心想应该很快能够实现的,当然首先想到是写一个递归算法,写递归算法首先的是要确定出口,当时很自然的觉得应该是开始下标应 ...
Arrays.binarySearch()
最近做1个OJ题目,其中有一步这样的操作:给定一个排序好的数组,随意给定一个数据,寻找数组中第一个大于或等于该值的数据在数组中的索引。如{1,4,5,10}, 给定4,应该返回的索引是1;给定6应该返回的索引是3
刚开始我用的是直接从前到后扫描一遍这种最原始的方法,跑junit用例的时候,发现此处存在性能瓶颈。最后使用了jdk中自带的二分搜索,满足了性能要求。呵呵, ...
二分法查找第一个满足条件的项
public class BinSearch1st {
Random random = new Random();
/**
* 二分查找,找到s的下标,如果没有返回-1
* @param arr
* @param s
* @return
*/
public int bsearch(int[] ar ...
可视化查找之二分查找
如果查找过程和程序执行能结合起来,那么这个过程会更加直观。
本文简单地实现了二分查找的可视化。界面很简单就包括两个部分:界面左侧是可视化查找部分,右侧是二分查找的代码。如下图所示:
程序的关键点主要有两点:
1. 如何在页面上表示出查找程序的运行过程。
2. 如何将排序程序的运行过程和可视化查找结合起来,保持状态一致。
我的解决方法如下:
我采用了JList去模拟程序的执行,JL ...
二分查找(java)
/**
* TODO
*/
package com.xeezee.array;
/**
* 二分查找法
*
* @author luoqinglong
* @date 2012-7-30
*/
public class Half {
/**
* @param args
*/
public static void main(String[ ...
二分查找的递归和非递归
二分查找,这个适用于已经排序好了的数组,没有排序那就先排序,不过要根据实际的情况,要是排序代价很小,这样很好了
/**
*2.15,在有序数组中查找,利用二分查找的方法
*
*/
#include <iostream>
using namespace std;
/**
*二分查找(也可以通过递归实现)
*
*/
int sort(int *a ...
机器指令clz的C实现
clz:查找一个数据x前置0的个数。
/**
* 二分查找1的位置
*/
int clzInC(unsigned int x)
{
if (!x) return 32;
int e = 31;
//1111 1111 1111 1111 0000 0000 0000 0000
if (x&0xFFFF0000) { e -=16; x > ...
经过大脑思考的:二分查找
首先声明:这是一个经过同学分析的、老师要求的、自己脑袋思考的、打过草稿的、用圆珠笔,右手亲手写的java有关的二分查找。
什么是二分查找:以一个数组(已经升序排列好了的)来分析,首先找到整个数组索引值的中间点的数组的key,如果等于你所要找的值X则这个索引值就是你要找的;如果>X,证明素要找的的前半部分,否则在后半部分,然后递归即可。(当然,这是我个人的理解)
我的代码实 ...
算法导论2.3-7 二分查找变种题目
package Chapter2;
/*
* 题目:算法导论2.3.7
* 请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,
* 判断出S中是否存在有两个其和等于S的数
*
*算法思想:
*1、默认集合S是排序过的,若果没有排序,先排序。。。各种排序方法。
*2、本问题是二分查找的变形。。
* for i ← ...
二分查找,迭代和递归,java实现
直接上代码,递归式
package cn.edu.cqupt.serach;
public class HarfSearch {
public static int search(int[] array,int start,int end,int target)
{
int middle = (start+end)/2;
if(target==array[middl ...
二分查找数组中的转折点
有一个有序的数组,将其中的元素都右移X位,这样将该数组变成了一个部分有序的数组。位置0到X以及X+1到n-1是有序的,但是array[X] > array[X+1]。array[X+1]为原先数组的最小值,我们称其为转折点。请找出该X+1。
解题思路:使用二分查找的方法来搜索X+1,时间复杂度为O(logn)。考虑只有一个元素和数组仍然保持有序的特殊情况。
public ...