今天做了两题,第二题没解出来,发现太麻烦了,放弃了……明天脑子清楚的时候再做。第一题就是标题中的这个问题。在一个旋转排序数组中找出最小的值。针对该问题出了两道不同要求的题目,分别是不考虑重复元素的情况和考虑有重复元素的情况。我的解题思路是,将数组的第一个值存到变量中,循环数组剩余的值,进行比较,第一...
分类:
其他好文 时间:
2014-10-31 22:03:20
阅读次数:
148
题目:统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于在这个数组中出现了4次,因此输出4.使用二分查找,基本思想:先查找该数字第一次出现的位置,然后查找该数字最后一次出现的位置.代码如下: 1 #include 2 #include 3...
分类:
编程语言 时间:
2014-10-31 11:33:19
阅读次数:
259
闲来无事【真的吗?你确定→_→在leetcode上刷了一道题。费时一小时,也是醉了。谨以此文,纪念我的伟大成果。【呵呵题目是找出非排序数组中缺少的最小正整数。要求时间复杂度O(n),空间复杂度为常数。首先考虑把数组排序。发现没有排序算法满足要求,放弃。想到找出数组中最大的数和最小的数,定义k值,从最...
分类:
其他好文 时间:
2014-10-29 23:58:23
阅读次数:
425
计数排序(Counting sort)是一种稳定的线性时间排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据.....
分类:
编程语言 时间:
2014-10-28 19:35:34
阅读次数:
218
数组排序1、冒泡排序 最常用也是最容易理解的排序方式(一个嵌套的循环比较每一次的大小根据设定的条件来交换位置)。 1 function bubblesort(ary) { 2 for (var i = 0; i ary[j + 1]) { 5 ...
分类:
编程语言 时间:
2014-10-28 17:14:27
阅读次数:
157
快速排序(数组a从小到大,参数1是待排序的数组,参数2是起始下标,参数3是终止下标): 1 static void sort(int [] a, int l,int r){ 2 int m = l+r>>1; 3 int i=l, j = r; 4 ...
分类:
编程语言 时间:
2014-10-28 11:36:43
阅读次数:
265
1.选择排序原理是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来,顺序放入新数组,直到全部拿完代码演示: 1 public class Test3 { 2 public static void main(String[] args) { 3 int[...
分类:
编程语言 时间:
2014-10-25 15:37:05
阅读次数:
171
https://oj.leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/允许重复,也就意味着会有a[l]==a[r],以及a[mid]==a[r]的情况出现。后者比较好办,从坐标图中看出直接r=mid即可。前者会有一个问题是当...
分类:
编程语言 时间:
2014-10-24 12:20:09
阅读次数:
197
leetcode上的一道题 题意大致是:给定一个循环移位后的排序数组,求数组的最小值 抛开假设不谈,实际上就是一个求数组最小值的问题,可以o(n)扫一遍记录最小值;也相当于求[0,vec.size()-1]的区间最小值问题,可以转化成线段树树状数组处理 本问题的假设可以利用:数组是“片段”有序的,可...
分类:
其他好文 时间:
2014-10-20 14:56:04
阅读次数:
143
先说说计数排序的思想:
计数排序假定待排序的所有元素都是介于0到K之间的整数;计数排序使用一个额外的数组countArray,其中第i个元素是待排序数组array中值等于i的元素的个数。然后根据数组countArray来将array中的元素排到正确的位置。
算法的步骤如下:
找出待排序的数组中最大和最小的元素
统计数组中每个值为i的元素出现的次数,存入数组countArray的第i项
对所有的计数累加(从countArray中的第一个元素开始,每一项和前一项相加)
反向填充目标数组:将每个元素i放在新数组...
分类:
编程语言 时间:
2014-10-17 01:47:03
阅读次数:
229