1、从set/map谈到hashtable/hash_map/hash_set 稍后本文第二部分中将多次提到hash_map/hash_set,下面稍稍介绍下这些容器,以作为基础准备。一般来说,STL容器分两种: 序列式容器(vector/list/deque/stack/queue/heap), ...
分类:
编程语言 时间:
2015-04-19 14:35:15
阅读次数:
231
交换排序(冒泡排序,快速排序);插入排序(直接插入排序,希尔排序);选择排序(简单选择排序,堆排序);归并排序;java源码实现常见内排序
分类:
编程语言 时间:
2015-04-18 21:43:27
阅读次数:
193
归并排序采用的是递归来实现,属于“分而治之”,将目标数组从中间一分为二,之后分别对这两个数组进行排序,排序完毕之后再将排好序的两个数组“归并”到一起,归并排序最重要的也就是这个“归并”的过程,归并的过程中需要额外的跟需要归并的两个数组长度一致的空间,比如需要规定的数组分别为:[3, 6, 8, .....
分类:
编程语言 时间:
2015-04-18 17:24:22
阅读次数:
171
(java版)public class mergingSort { public static void merge(int[] a,int left, int center, int right){ int[] tmpArr = new int[a.length]; int mid = ce...
分类:
编程语言 时间:
2015-04-17 23:34:32
阅读次数:
176
算法图搜索(广度优先、深度优先)深度优先特别重要排序动态规划匹配算法和网络流算法正则表达式和字符串匹配数据结构图 (树尤其重要)Map堆栈/队列Tries | 字典树额外推荐贪婪算法概率方法近似算法算法:三路划分-快速排序合并排序(更具扩展性,复杂度类似快速排序)DF/BF 搜索 (要知道使用场景)...
分类:
编程语言 时间:
2015-04-17 11:09:01
阅读次数:
191
#include #include using namespace std;struct ListNode //默认为public{ int data; ListNode* next; ListNode(int x, ListNode* nextNode):data(x), nex...
分类:
编程语言 时间:
2015-04-16 21:22:35
阅读次数:
143
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都...
分类:
编程语言 时间:
2015-04-16 13:58:35
阅读次数:
170
快速排序与归并排序相比,同样是递归,归并算法是递归分解数组之后再合并,而快速排序递归分解数组之前已经进行合并。#includeint W_K_T_S(int a[] , int first , int last) { // 确定基准数并调整相应位置 int te...
分类:
编程语言 时间:
2015-04-16 12:19:19
阅读次数:
163
归并排序重在“归并”一词,即先递归分解数组,再合并数组的过程。#includevoid heBin(int a[] , int first , int mid , int last) { // 合并数组的左边和右边 int *temp = new int[last - first ...
分类:
编程语言 时间:
2015-04-16 11:45:51
阅读次数:
113