| by msbeta | No comments

数据结构排序算法-堆排序

1.什么是堆排序

堆排序是利用堆这种数据结构设计的一种排序算法。它的最好、最坏、平均的时间复杂度都是nlogn,是一种非稳定排序算法。

2.什么是堆

堆(heap)是计算机科学中一类特殊的数据结构的统称,它满足以下的性质:

1) 堆中某个节点的值总是不大于或不小于其父[……]

继续阅读

Read More
| by msbeta | No comments

链表的二分搜索实现-跳跃表

跳跃列表是在很多应用中有可能替代平衡树而作为实现方法的一种数据结构。跳跃列表的算法有同平衡树一样的渐进的预期时间边界,并且更简单、更快速和使用更少的空间。

—-by 发明者

在redis中有序集合就使用到了跳跃表。

跳跃表允许快速查询一个有序连续元素的数据链表,它的效率可以做到和二分相同,都是[……]

继续阅读

Read More
| by msbeta | No comments

STL标准容器中内容的打印技巧

在调试C++代码的过程中经常需要打印容器内容,怎么打印才能更加方便。

1、简单直接的方法

采用索引遍历

或者使用迭代器

2、高级的打印方法

用for_each和Lamda表达式

采用ostream_iterator

[……]

继续阅读

Read More
| by msbeta | 1 comment

C++11新特性-std::all_of

std::all_of用于检查是否元素序列中所有元素都满足给定的条件,所有要素都满足给定条件时,函数返回true;否则返回false。

1.函数原型:

函数的行为类似于下面的代码:

2.std::all_of函数的用法

2.1 Using std::all_of()[……]

继续阅读

Read More
| by msbeta | No comments

C++中检查字符串是否以指定字符串开头

在C++中,std::string没有提供starts_with()函数用来检查字符串是否以指定字符串开头.本文讨论如何使用std::string::find和Boost库实现starts_with()的功能.

1.使用STL的string::find()函数实现starts_with()功能[……]

继续阅读

Read More