Skip to main content
  1. Posts/

C++ sort学习笔记

·1 min
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

回想起大一的时候打cf…那个时候对C++还不怎么熟悉。。。用sort不会自定义排序方式。。

于是手写快排。。。直接取中间元素没加随机化。。。跪了。。。

后来知道sort怎么写以后。。发现sort是可以通过的。。。

于是我就一直以为sort是带随机化的快排。。。

然而实际上是:

sort在数据量比较大的时候用quick_sort…当分段后的数据量小于某个门槛,为了避免对此递归带来的额外负担。。采取插入排序的策略。。

std::sort 的混合策略(根据正文上下文重绘的示例图,并非遗失原图)

以及。。。快排在最快情况下还是会到达平方的复杂度。。。

于是有人发明了introsort…中文翻译叫内省排序。。。?

维基百科_introsort

这个算法其实就是。。对于数据量大的时候。。。一开始还是快排。。。但是当递归深度过深时。。用堆排。。。

据说现在的STL一般都是用了introsort….

Related

c++11 学习笔记

·1 min
昨天终于搞定了ycm对c++11的支持…. 嘛,17都快出来了,我竟然连11都不会用。

c语言中static的作用

·1 min
一般有两个 1static int a; 2int b; 3void func(void) 4{ 5 static int c=0; 6 int d; 7} 在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。 ** c和d的区别是,d是一个自动变量,func函数执行完后,d会自动被释放。但c却不会被释放,下一次调用func函数时,c的值会保留上次的值继续使用(而不是初始值0,初始化只会在函数第一次被调用的时候执行)**