会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
|旧市拾荒|
三年工作经验,任职于某银行科技部门,从事后端开发与数据开发。
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
19
20
21
22
23
24
25
26
27
下一页
2019年1月17日
Java实现桶排序和基数排序
摘要: 桶排序代码: 桶排序结果: 基数排序代码: 基数排序结果:
阅读全文
posted @ 2019-01-17 18:32 |旧市拾荒|
阅读(1291)
评论(0)
推荐(0)
编辑
Java实现堆排序和计数排序
摘要: 堆排序代码: 思想:每次都取堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为最小堆,依次类推,最终得到排序的序列。 堆排序结果: 计数排序代码: 计数排序结果:
阅读全文
posted @ 2019-01-17 12:53 |旧市拾荒|
阅读(464)
评论(0)
推荐(0)
编辑
2019年1月16日
两道关于逆序对的题目
摘要: 题目一:合并有序数组:给定两个排序后的数组A和B,其中A的末端有足够的缓冲空间容纳B。编写一个方法,将B合并入A并排序。 思路:注意这儿已经说明A的空间足够,那就说明不能再开辟辅助空间。然后合并的话可以采用归并的思想,就能解决这个问题。 代码: 结果: 题目二:逆序对个数:一个数列,如果左边的数大,
阅读全文
posted @ 2019-01-16 22:05 |旧市拾荒|
阅读(557)
评论(0)
推荐(0)
编辑
最小可用id
摘要: 题目:在非负数组(乱序)中找到最小的可分配的id(从1开始编号),数据量10000000。 题目解读:在一个不重复的乱序的自然数组中找到最小的缺失的那个数,比如1,2,3,6,4,5,8,11。那么最小可用id就为7。 代码: 结果: 结论:根据每个解法所消耗的时间即可得出哪个解法的效率更高。所以在
阅读全文
posted @ 2019-01-16 11:02 |旧市拾荒|
阅读(656)
评论(0)
推荐(2)
编辑
2019年1月15日
超过一半的数字
摘要: 题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。 思路:解法一、排序完后返回arr[N/2] O(nlgn) Arrays.sort(arr); System.out.println(arr[N/2]); 解法二、hash统计 解法三、顺序统计,就跟寻找乱序数组中第K大的数解法一
阅读全文
posted @ 2019-01-15 18:08 |旧市拾荒|
阅读(411)
评论(2)
推荐(0)
编辑
最快效率求出乱序数组中第k小的数
摘要: 题目:以尽量高的效率求出一个乱序数组中按数值顺序的第k 的元素值 思路:这里很容易想到直接排序然后顺序查找,可以使用效率较高的快排,但是它的时间复杂度是O(nlgn),我们这里可以用一种简便的方法,不一定需要排序,使用快速排序中双向分区的扫描方法,这里使用的是优化过后的三点中值法,具体思想一样,只是
阅读全文
posted @ 2019-01-15 16:04 |旧市拾荒|
阅读(593)
评论(0)
推荐(0)
编辑
2019年1月13日
调整数组顺序使奇数位于偶数前面
摘要: 题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n) 思路:可以按照归并的思想,开一个辅助空间,然后再使用快排的单向扫描分区的思想从数组开头扫描,奇数就放在辅助空间左侧,偶数放在右侧,但是这样的话就会消耗一个O(N)空间,
阅读全文
posted @ 2019-01-13 23:38 |旧市拾荒|
阅读(304)
评论(0)
推荐(0)
编辑
分治算法的完美使用----归并排序
摘要: 归并排序(Merge Sort)算法完全依照了分治模式 分解:将 n 个元素分成各含 n/2 个元素的子序列; 解决:对两个子序列递归地排序; 合并:合并两个已排序地子序列以得到排序结果;和快速排序不同的是 归并的划分比较随意,快排重点就是划分 归并的重点就是合并,快排不需要合并 代码: 结果:
阅读全文
posted @ 2019-01-13 22:39 |旧市拾荒|
阅读(649)
评论(0)
推荐(0)
编辑
快速排序分区以及优化方法
摘要: 一、快速排序扫描分区法 通过单向扫描,双向扫描,以及三指针分区法分别实现快速排序算法。着重理解分区的思想。 单向扫描分区法 思路:用两个指针将数组划分为三个区间,扫描指针(scan_pos)左边是确认小于等于主元的,扫描指针到某个指针(next_bigger_pos)中间为未知的,因此我们将第二个指
阅读全文
posted @ 2019-01-13 19:12 |旧市拾荒|
阅读(1246)
评论(0)
推荐(0)
编辑
分治法以及快速排序
摘要: 分治法 分治法(divide and conquer,D&C):将原问题划分成若干个规模较小而结构与原问题一致的子问题 ;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 容易确定运行时间,是分治算法的优点之一。 分支模式在每一层递归上都有三个步骤: --分解(Divide):将原问题分解
阅读全文
posted @ 2019-01-13 17:28 |旧市拾荒|
阅读(1294)
评论(0)
推荐(1)
编辑
高效求a的n次幂的算法
摘要: 代码: 结果:
阅读全文
posted @ 2019-01-13 11:30 |旧市拾荒|
阅读(1136)
评论(0)
推荐(0)
编辑
最长连续递增子序列(部分有序)
摘要: 题目:(1,9,2,5,7,3,4,6,8,0,)中最长的递增子序列为(3,4,6,8)。 代码: 结果:
阅读全文
posted @ 2019-01-13 10:44 |旧市拾荒|
阅读(1648)
评论(4)
推荐(0)
编辑
在有空字符串的有序字符串数组中查找
摘要: 题目:有个排序后的字符串,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引。 代码:
阅读全文
posted @ 2019-01-13 09:41 |旧市拾荒|
阅读(548)
评论(1)
推荐(0)
编辑
旋转数组的最小数字(改造二分法)
摘要: 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 思路:这儿题目说了数组是有序的,为了提升效率,可以用二分查找去做,题目上也说了用二
阅读全文
posted @ 2019-01-13 09:15 |旧市拾荒|
阅读(373)
评论(0)
推荐(0)
编辑
2019年1月12日
递归----小白上楼梯
摘要: 题目:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。 思路:这种题目一般从最后结果入手,逆推,假如小白已经在最顶端,那么有f(n)种方式走完所有楼梯,有f(n-1)种方式走完倒数第一个楼梯,有f(n-2)种方式走完倒数第二个楼梯,有f
阅读全文
posted @ 2019-01-12 22:38 |旧市拾荒|
阅读(678)
评论(2)
推荐(0)
编辑
上一页
1
···
19
20
21
22
23
24
25
26
27
下一页
公告