题目: Sort a linked list inO(nlogn) time using
constant space complexity.解题思路: 复杂度为O(n* logn)
的排序算法有:快速排序、堆排序、归并排序。对于链表这种数据结构,使用归并排序比较靠谱。递归代码如下:代码: /...
分类:
其他好文 时间:
2014-05-16 05:49:04
阅读次数:
266
题目: Sort a linked list using insertion sort.解题思路:
假设 list[1..i]是排好序的,找到第i+1个元素应该插入的位置及其前驱,然后将其插入。代码: /** * Definition for
singly-linked list. * str...
分类:
其他好文 时间:
2014-05-16 05:47:08
阅读次数:
258
枚举 索引从0开始sort 默认升序排列 Array.Sort(intSort);//复制数组
Array.Copy(intSort,intNew,3); intsort 源数组 intnew 目标数组
3长度声明类数组之后,在用到具体的元素时需要再重新声明一遍public c...
分类:
其他好文 时间:
2014-05-16 05:21:09
阅读次数:
247
堆的概念
堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序
堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列...
分类:
其他好文 时间:
2014-05-15 16:18:31
阅读次数:
329
啊啊啊啊,好怀念这种用递归保存路径然后打印出来的题目啊,好久没遇到了。
分了两种,一种是可以重复使用数组中数字的,一种是每个数字只能用一次的。其实没有多大区别,第一种每次进入递归的时候都要从头开始尝试,第二种要找一个标记的数组,把已经用到过的排除掉,就像生成全排列时的做法一样。跟我一样用引用保存中间结果的话,要注意回退的情况。第二种回退时,要把用到的那个数也恢复为可用,就完全像全排列时做的一样。...
分类:
其他好文 时间:
2014-05-15 04:46:34
阅读次数:
272
在 O(nlogn)的时间内对一个链表进行排序。。明显是要用归并或者快排
第一次知道说原来归并也可以用链表来写,被刷了下三观。。。。。用快慢指针的方法找分界点。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNod...
分类:
其他好文 时间:
2014-05-14 15:03:49
阅读次数:
230
很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last
可以查得这个月份有登陆主机者的身份。那么我可以针对每个使用者查出他们的总登陆次数吗?
此时就得要排序与计算之类的命令来辅助了!底下我们介绍几个好用的排序与统计命令,首先是排序命令sort。[root@www ~.....
分类:
系统相关 时间:
2014-05-13 20:23:05
阅读次数:
375
很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last
可以查得这个月份有登陆主机者的身份。那么我可以针对每个使用者查出他们的总登陆次数吗?
此时就得要排序与计算之类的命令来辅助了!我们已经介绍过了排序命令sort,如果我排序完成了,想要将重复的数据仅列出一个显示,.....
分类:
系统相关 时间:
2014-05-13 19:28:33
阅读次数:
309
这道题还挺好的,如果你的思路是每次生成一个全排列,然后累计到k次,那么停下来吧,肯定超时了亲。。
微软今年的笔试题里有一道类似的,我之前已经提到过了,是只有0和1的字符串,求第k个排列是什么样子的。这道题比那个要难一些,但是总体的思路是一样的。假设有n个数要组成排列,求第k个排列。像填表一样,从高位往地位,逐个填写。先考虑有n-1个数要组成排列,最多有(n-1)!种情况,当第n个数加入后,第n个...
分类:
其他好文 时间:
2014-05-13 13:42:02
阅读次数:
246
//升序void insertion_sort(vector &num){
for(int i = 1; i =0 && num[j] >= val){
num[j+1] = num[j];...
分类:
其他好文 时间:
2014-05-13 11:42:59
阅读次数:
190