在 O(nlogn)的时间内对一个链表进行排序。。明显是要用归并或者快排
第一次知道说原来归并也可以用链表来写,被刷了下三观。。。。。用快慢指针的方法找分界点。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNod...
分类:
其他好文 时间:
2014-05-14 15:03:49
阅读次数:
230
STL库中实现了nth_element函数,实现的功能是 “返回n个元素中的第k小的元素”。
首先,头脑风暴一下“返回n个元素中的第k小的元素”的算法:
1
排序 ,首选快排 O(n*logn),取出第k个即可。
2
其次,是维护一个大小为k的数组,找出数组中的最大值kmax,然后依次遍历剩下的 n-k 个元素,如果小雨kmax,则替换掉kmax
元素,然后再...
分类:
其他好文 时间:
2014-05-11 07:35:46
阅读次数:
250
partition是快排的准备工作,被用在其他很多问题上,比如找满足某个条件的数之类的。
在数组中,可以一头一尾的指针依次置换,这样是不能保证源数组中的相对顺序的。链表中就不一样了,没办法拿到尾部的指针,只能从头部往后找,找到第一不满足partition条件的节点,即较大的数,然后再往后找较小数,把较小数的节点移到前面来,因此跟数组的做法还有个区别,链表的partition只有一个指针在做实际的...
分类:
其他好文 时间:
2014-05-09 20:48:28
阅读次数:
252
冒泡排序,往两个方向泡,一个往小泡,一个网大泡
#include
#include
#include
void bubble_sort(int *a,int n){
int temp;
for(int i=0;i<n;i++)
for(int j=0;ja[j+1]){
temp=a[j];
a[j]=a[j+1];
...
分类:
其他好文 时间:
2014-04-29 13:28:21
阅读次数:
364
小米面试
我:
一面:
数据结构+算法:
斐波那契数列:非递归-迭代
1MB内存,外存-100W整数,排序,O(1)-位图法
设计模式:
代理模式:OO
C++:虚函数表
二面:
数据结构+算法:
快排
二叉树遍历
设计模式:
单例模式-多线程:
关系数据库的特性
进程和线程的区别
三面:
数据结构+算法:...
分类:
移动开发 时间:
2014-04-29 13:17:19
阅读次数:
606
利用挖坑填数+分治实现的快排代码如下:import
java.io.BufferedReader;import java.io.IOException;import
java.io.InputStreamReader;import java.util.Formatter;import java.ut...
分类:
其他好文 时间:
2014-04-29 10:33:46
阅读次数:
404