xml地图|网站地图|网站标签 [设为首页] [加入收藏]
又叫抗变,希尔排序
分类:编程

ubuntu下boost编译安装

boost

安装

引用:对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点的从数组的一端移动到另一端。例如,如果主键最小的元素正好在数组的尽头,要将它挪到正确的位置就需要N-1次移动。希尔排序为了加快速度简单的改进了插入排序,交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。

  今天回忆了之前看的《深入理解C#》这本书中的泛型章节,其中对泛型的可变性的理解。泛型可变性分两种:协变和逆变。逆变也又称为抗变。

1.依赖安装

  1. apt-get install mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev 


            int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
            int h = 1;
            int length = sort.Length;
            while (h > length / 3)
            {
                h = 3 * h + 1;      // 1,4,13,40,121,364,1093,...
            }   // h的初始值根据数组元素多少而定
            while (h >= 1)  // 当h=1 时排序完成
            {
                for (int i = h; i < length; i++)  // 将间隔为h的元素排序
                {
                    for (int j = i; j >= h && sort[j] < sort[j - h]; j -= h) // 当满足这两个条件时交换 数值
                    {
                        int temp = sort[j];
                        sort[j] = sort[j - h];
                        sort[j - h] = temp;
                    }
                }
                h = h / 3;
            }
            for (int i = 0; i < sort.Length; i++)  // 输出
               {
                    Console.Write(sort[i] + " ");
               }

 怎么理解这两个名词的意思:

2.访问boost官网下载boost最新版本

  备注:文字和代码有参考到书籍:算法 第四版(人民邮电出版社) 希尔排序 (162-163)

  ①:协变即为在泛型接口类型中使用out标识的类型参数。协变的字面意思是“与变化的方向相同”②逆变那就是用in来标识的泛型接口类型的类型参数。逆变的字面意思是“与变化的方向相反”

3.解压下载文件,例如下载文件在~/Downloads下

  1. cd ~/Downloads 


  2. tar --bzip2 -xvf boost_1_58_0.tar.bz2 


  需要注意的是无论是协变还是逆变也只能在泛型接口中来使用。

4.准备安装

  1. cd boost_1_58 


  2. ./bootstrap.sh 


生成文件b2和bjam计算md5sum发现二者一致
生成bjam,上述命令可以带有各种选项,具体可参考帮助文档: ./bootstrap.sh --help。其中–prefix参数,可以指定安装路径,如果不带–prefix参数的话(推荐),默认路径是 /usr/local/include 和 /usr/local/lib,分别存放头文件和各种库。执行完成后,会生成bjam,已经存在的脚本将会被自动备份。注意,boost 1.49会在当前目录下,生成两个文件bjam和b2,这两个是一样的,

  先来举个基本的例子,来加强你对可变性的理解。在C#中有隐式类型转换,比如:

5.编译并安装boost

编译完成后,进行安装,也就是将头文件和生成的库,放到指定的路径(–prefix)下

  1. ./b2  //编译boost 


  2. sudo ./b2 install //将生成的库安装到/usr/local/lib目录下面,默认的头文件在/usr/local/include/boost目录下边。 


  string str = "nibian";
  object str1 = str;
  Console.WriteLine(str1);

本文由澳门新葡亰手机版发布于编程,转载请注明出处:又叫抗变,希尔排序

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文