- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 秒懂单链表及其反转(reverse)
什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列。链表是最普通,最简单的数据结构,它是实现其他数据结构如stack, queue等的基础。链表比起数组来,更易于插入,删除。Node可以定义如下:typedef int element_type;typedef struct node *node_ptr;struct node {el
2015-04-29 23:00:36 12026
原创 秒懂快速排序
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来快速排序核心:"基准"(pivot),分区(partition),交换(swap),递归(r
2015-04-28 21:54:27 1767 1
原创 秒懂插入排序与选择排序
插入排序原理:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序核心:假设第一个元素排好,之后的元素对排好的部分从后向前比较并逐一移动。插入排序实现:void insertion_sort(int a[], int n){ int i,j,tmp; for (i = 1; i < n; i++) { tmp = a[i
2015-04-28 17:50:26 19750 6
原创 秒懂冒泡排序
长时间不复习,简单的算法也会忘记啊。冒泡排序的核心:两两比较相邻元素,将最大或最小的元素像气泡一样,向数组的一端”浮“。冒泡排序的平均时间复杂度:冒泡排序的C语言实现:#include void bubble_sort(int array[], int n){ int i,j,tmp; for (i = 0; i < n - 1; i++) {
2015-04-28 15:41:16 1470
原创 C++11,使简单的事情简单
Joe Armstrong说过一句话:面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个拿着香蕉的大猩猩,和整个丛林。显然地,这将简单问题复杂化了。我们不否认这个世界上,有些代码是不能简单化的。对于那些可以简单化的代码,我们还是希望不要复杂化。如果你是这样的人,没有理由不使用C++11。下面将展示C++11是如何奇迹般地使代码简单
2015-04-22 01:26:55 2079 2
原创 LeetCode198——House Robber
这题告诉我们,要成为一个优秀的小偷,得懂编程才行。哈哈You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each
2015-04-20 23:36:21 1428
原创 LeetCode93——Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combinations.For example: Given "25525511135",return ["255.255.11.135", "255.255.111.35"]. (Order does
2015-04-20 14:34:48 1401
原创 C++11:深入理解右值引用,move语义和完美转发
乍看起来,move语义使得你可以用廉价的move赋值替代昂贵的copy赋值,完美转发使得你可以将传来的任意参数转发给 其他函数,而右值引用使得move语义和完美转发成为可能。然而,慢慢地你发现这不那么简单,你发现std::move并没有move任何东西,完美转发也并不完美,而T&&也不一定就是右值引用……move语义最原始的左值和右值定义可以追溯到C语言时代,左值是可以出现在赋值符
2015-04-15 12:45:34 47505 14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人