算法练习package common;import java.util.Arrays;public class bs { void nbs(int n,int s[],int x) { int low=0; int high=n-1; while(lows[mid]) { low=mid...
分类:
其他好文 时间:
2015-09-03 21:42:25
阅读次数:
197
题目:统计一个数字在排序数组中出现的次数。思路:因为是排好序的数组,所以可以采用二分查找的算法。一般最容易想到的思路是采用二分查找先找到一个,然后往他左右两边遍历,但是这个方法由于在n个数组中还可能有n个k,所以查找的复杂度还是O(n)可以先用二分查找算法找到第一个出现的位置,即当找到一个时,看它前...
分类:
编程语言 时间:
2015-09-03 10:19:58
阅读次数:
350
编程之美有一道考察多种排序的题目,题目如下:
有一个长度为N的无序数组,假定其中的每一个元素都各不相等,求其中最大的K个数。
作者对于此题目结合各种排序算法给出了五种解法思路。
解法一:
使用快速排序或堆排序对它们元素进行排序,整个排序的时间复杂度为O(N*log2{log}_2N),然后取出前K个,时间复杂度为O(K),总时间复杂度O(N*log2{log}_2N)+O(K)=O(N*l...
分类:
其他好文 时间:
2015-09-02 02:06:37
阅读次数:
277
Arrays:针对数组操作的工具类1.toString 把任何类型的数组转为字符串2.sort:排序3.public static int binarySearch(int[] arr,int key) :二分查找Integer1.构造方法: 1 public Integer(int value)....
分类:
其他好文 时间:
2015-09-02 00:22:06
阅读次数:
222
采用二分查找的方法,一旦找到,left++,right--,--middle++,扩展查找。开始while(left data ,int k) { 4 int n=data.size(); 5 if(n=0){20 right-...
分类:
编程语言 时间:
2015-09-02 00:15:43
阅读次数:
229
数据结构中查找的知识点主要有以下三点1、静态查找 1.1 顺序查找 1.2 有序表 1.2.1 二分查找 1.2.2 插值查找2、动态查找 2.1 二叉排序树 2.2 平衡二叉树 2.3 B-和B+树3、哈希查找 3.1 常用哈希函数 3.2 解决冲突的办法
分类:
编程语言 时间:
2015-08-31 15:13:32
阅读次数:
246
【最长重复子串问题】可重叠最长重复子串 -- POJ 3261题意:给出包含n个元素的数组a,问其中最长可重叠重复子串的长度,要求该子串至少重复k次;输入保证至少存在一个重复k次的最长子串;难点:二分查找子串的长度,注意对该长度的子串是否存在K个重复子串的判定方法;代码: 1 /* 2 Prob.....
分类:
编程语言 时间:
2015-08-31 11:45:28
阅读次数:
275
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:
1.第一步查找中间元素,即5,由于5
2.寻找{6, 7, 8,...
分类:
编程语言 时间:
2015-08-31 01:11:44
阅读次数:
166
bool Bin_Search(const int *pre, int low, int high, const int key)
{
while(low >1);
if(pre[mid] == key) return true;
else i...
分类:
其他好文 时间:
2015-08-30 23:16:54
阅读次数:
199
LeetCode 153. Find Minimum in Rotated Sorted Array 查找循环排序数组的最小元素(循环排序数组可以理解,一个环状数组(0,1,2,4,5,6,7),从其中一个元素断开后4,5,6,7,0,1,2)。查找一个数组的最小原始,我们知道最简单的方式就是循环遍历其中数字,时间复杂度O(n)肯定能找到这个元素。...
分类:
编程语言 时间:
2015-08-30 14:26:17
阅读次数:
172