面试时害怕排序算法的书写?我们完全可以背诵归并排序算法,it's easy....
分类:
编程语言 时间:
2015-03-18 20:36:35
阅读次数:
201
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插...
分类:
编程语言 时间:
2015-03-17 23:13:00
阅读次数:
215
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2015-03-17 20:03:18
阅读次数:
152
一.有N堆石子,每堆的重量是w[i],可以任意选两堆合并,每次合并的花费为w[i]+w[j],问把所有石子合并成为一堆后的最小花费是多少。因为是可以任意合并,所以每次合并的时候选最小的两堆合并,贪心即可。二.有N堆石子,每堆的重量是a[i],排成一条直线,每次只能合并相邻的两堆,直到合成一堆为止,问...
分类:
其他好文 时间:
2015-03-17 17:30:37
阅读次数:
180
1、从set/map谈到hashtable/hash_map/hash_set稍后本文第二部分中将多次提到hash_map/hash_set,下面稍稍介绍下这些容器,以作为基础准备。一般来说,STL容器分两种: 序列式容器(vector/list/deque/stack/queue/heap), 关...
分类:
编程语言 时间:
2015-03-17 15:40:48
阅读次数:
231
排序 归并排序排序 归并排序归并排序相对 快速排序 来说是比较容易写的。代码很简单,甚至比插入排序,冒泡排序等等还容易写/* * CreateTime: 2014-09-14 09:49:11 */#include void msort(int l, int r);void merge(int l,...
分类:
编程语言 时间:
2015-03-17 00:37:31
阅读次数:
122
题目:Sort a linked list in O(n log n) time using constant space complexity.
思路:要求时间复杂度O(nlogn)
知识点:归并排序,链表找到中点的方法
存在的缺点:边界条件多考虑!!!
/**
* LeetCode Sort List Sort a linked list in O(n log n) time us...
分类:
编程语言 时间:
2015-03-16 23:14:12
阅读次数:
260
考虑一个简单的问题,两个长度为n的有序数组A和B,从每个数组中各选出一个数相加,共n2中情况,求最小的n个数。将这n2个数拆成n个有序表:A1+B1≤A1+B2≤...A2+B1≤A2+B2≤......An+B1≤An+B2≤...然后用优先队列合并成一个有序表即可。队列中需要记录两个数的和s,以...
分类:
其他好文 时间:
2015-03-16 16:10:15
阅读次数:
129
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参...
分类:
编程语言 时间:
2015-03-16 08:38:00
阅读次数:
264
将多个有序表合并成一个有序表就是多路归并问题,可用优先队列来解决。 1 #include 2 #include 3 using namespace std; 4 5 const int maxn = 1000 + 10; 6 7 struct Node 8 { 9 int time,...
分类:
其他好文 时间:
2015-03-15 21:14:23
阅读次数:
166