如果已知被排序的n个元素,值范围固定在在 "[0,k)"内],那么计数排序是最好的选择,它具有线性复杂度。
这个约束有些过强,有些时候,可以将不满足这个条件的转化一下:
比如 [-k, k)映射]到[0, 2k)等]。
再比如1/p的小树映射到p k-p等等。
下面上算法,主要走两遍:
首先建立k个桶
(1)扫描n个元素,增加对应桶中的计数
(2)从小到大扫描k个桶,计数非零则减一,然后顺序、依次输出。
源代码:
#include <stdio.h>[......]
如果已知被排序的n个元素,值范围固定在在 "[0,k)"内],那么计数排序是最好的选择,它具有线性复杂度。
这个约束有些过强,有些时候,可以将不满足这个条件的转化一下:
比如 [-k, k)映射]到[0, 2k)等]。
再比如1/p的小树映射到p k-p等等。
下面上算法,主要走两遍:
首先建立k个桶
(1)扫描n个元素,增加对应桶中的计数
(2)从小到大扫描k个桶,计数非零则减一,然后顺序、依次输出。
源代码:
#include <stdio.h>[......]
在Python中,INI解析这种问题交给ConfigParser就行了,非常简单,但是C++显然没有原生的类库解决问题。
Windows下的ini API不是可移植的,所以无视它。
推荐一个非常好用的,跨平台的INI解析器:SimpleINI,支持section,读、写、各种value,遍历等。
网址:http://code.jellycan.com/simpleini/
旧代码废弃了,已经托管到github上:https://github.com/brofield/simp[......]
Transmission是Linux下最著名的BT下载软件了。
由于Transmission更新很快,且依赖库非常多,强烈建议您使用Ubuntu 10.04及以上版本,使用apt安装,本文即在如下环境下介绍。
Transmission分为很多类型,我们以Daemon即只有后台守护进程、没有GTK图形界面的为例子,这更适用于远程使用的情况。
1、安装Transmission
#安装
sudo apt-get install transmission-daemon
#启动[......]