Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

堆排序的分析及实现

堆排序的分析及实现

(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。二叉堆可以分为两种形式:最大堆和最小堆。若将记录按从大到小排列,建“小”顶堆。若将记录按从小到大排,建“大”顶堆。说明:在堆排序算法中,我们使用的是最大堆,最小堆通常用于构造优先队列。算法分析:时间复杂度是O(nlogn)。堆排序属于原址排序:任何时候都只需要常数个额外的元素空间存储临时数据。堆排序是不稳定的排序算法。#include <stdio...
《APUE》进程环境

《APUE》进程环境

一、main函数。main函数的原型如下。argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。int main(int argc, char *argv[])当内核执行C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址,这是由连接编辑器设置的,而连接编辑器则由C编译器调用。启动例程从内核取得命令行参数和环境变量,然后为调用main函数做好安排。启动例程使得main返回...
C#泛型中的类型约束和类型推断

C#泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念(见 http://www.linuxidc.com/Linux/2015-02/113465.htm)。在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断。类型约束相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束。类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的。回到前一篇例子中的泛型方法,这个泛型方...
C#中值类型和引用类型

C#中值类型和引用类型

本文将介绍C#类型系统中的值类型和引用类型,以及两者之间的一些区别。同时,还会介绍一下装箱和拆箱操作。值类型和引用类型首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型。值类型:基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。 整型(sbyte、byte、char、short、ushort、int、uint、long、ulong )浮点型(float 和 double )十进制型(decimal )布尔型(bool )结...
理解C#事件

理解C#事件

前面文章中介绍了委托相关的概念(http://www.linuxidc.com/Linux/2015-02/113469.htm),委托实例保存这一个或一组操作,程序中将在某个特定的时刻通过委托实例使用这些操作。如果做过GUI程序开发,可能对上面的描述会比较熟悉。在GUI程序中,单击一个button会触发一个click事件,然后会执行一系列的操作,这一系列的操作就被存放在一个委托实例中。接下来我们就看看事件。使用委托中的问题回到前面文章中苹果和富士康的例子...
C#委托的基本概念

C#委托的基本概念

最近在看深入理解C#,发现这是一本很不错的书,将很多C#的知识点联系了起来,更像是一本C#历史书,从C# 1一步步介绍到C# 4。所以准备一边看,一边整理读书笔记。那么就先从委托开始。委托是C#中一个非常重要的概念,从C# 1开始就有了委托这个核心概念,在C# 2和C# 3中委托又有了很多改进。通过委托,我们可以将一个方法当作对象封装起来,并且在运行时,我们可以通过这个对象来完成方法的调用。委托的使用首先,来个简单的例子,苹果只负责设计iphone,而把组...
Python 编程风格

Python 编程风格

概要:1、Python语句和语法2、Python标识符3、基本编程风格一、Python语句和语法1、可以从一行的任何地方开始2、续行:""":闭合操作符,单一语句跨多行3、代码组、缩进相同的一组语句构成的一个代码块、首行以关键字开始,如if、while 等,以冒号结束、Python使用缩进来分隔代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误 、同一行放置多个语句;:以分号作为分隔符、模块每一个Python脚本文件都可以被当成是一个模块;模块的...
C++容器模板在共享内存中的使用

C++容器模板在共享内存中的使用

本文用于探讨在共享内存中使用容器的好处,以及几种在共享内存中C++模板容器的方法。1 为什么要在共享内存中使用模板容器?为什么要避开普通内存而选择共享内存,那肯定是使用共享内存的优势:共享内存可以在多进程间共享,到达进程间通信的方式。共享内存可以在进程的生命周期以外仍然存在。这就可以保证在短暂停止服务(服务进程coredump,更新变更)后,服务进程仍然可以继续使用这些共享内存的数据。如果这些优势在加上C++容器模板使用方便,开发快速的优势,无疑是双剑合璧...
shell脚本中grep时关于变量带双引号的小问题

shell脚本中grep时关于变量带双引号的小问题

今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容。指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去。 这段代码如下:for target in `cat content.txt`do grep $target test.txt >>result.txtdonecontent.txt文本中的内容为:"域[2]""域[3]""域[4]" 因为使用grep时,最后要执行的命令是(g...
关于Python模块和包

关于Python模块和包

我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在Windows的C盘根目录下,那么外部的包一般放在:C:Python34Libsit-packages下,此目录下有以.py单独存在的文件,也有以文件夹存在的包,下面我们简单说一下Python中的模块和包,看完之后,也许会对这个目录看的更清楚一些。一、模块我们编写文件:a.py,放在C:Python34Libsit-packages下,里面写上一句代码为:print("this is ...
深入理解C#泛型

深入理解C#泛型

前面两篇文章介绍了C#泛型的基本知识和特性,下面我们看看泛型是怎么工作的,了解一下泛型内部机制。http://www.linuxidc.com/Linux/2015-02/113465.htmhttp://www.linuxidc.com/Linux/2015-02/113466.htm泛型内部机制泛型拥有类型参数,通过类型参数可以提供"参数化"的类型,事实上,泛型类型的"类型参数"变成了泛型类型的元数据,"运行时"在需要的时候会利用他们构造恰当的类型,通...
排序算法(1) 快速排序 C++实现

排序算法(1) 快速排序 C++实现

快速排序基本特性时间复杂度:O(n*lgn)最坏:O(n^2)空间复杂度:最好情况下:O(lgn),最坏情况:O(n),平均情况:O(lgn)不稳定。关于快速排序的空间复杂度,谢谢@命运他爹 同学指正。详述一下。快速排序由于每次递归的时候会占用一个空间返回中间数位置,所以一次递归的空间复杂度为O(1)。最好情况和平均情况下的递归深度为O(lgn),相应的空间复杂度就是O(lgn)最坏情况下的递归深度为O(n),空间复杂度为O(n)。算法1234567891...
排序算法(2) 堆排序 C++实现

排序算法(2) 堆排序 C++实现

堆1 数组对象2 可以视为一棵完全二叉树3 一个堆可以被看作一棵二叉树和一个数组,如下图所示:4 下标计算(通常使用内联函数或者宏来定义下标操作):已知某个结点的下标为i其父节点下标:i/2向下取整左孩子下标:2i右孩子下标:2i+15 最大堆:除根节点以外的每个节点i,有A[PARENT(i)] >= A[i]最小堆:除根节点意外的每个节点i,有A[PARENT(i)] <= A[i]堆排序步骤:建大顶堆去堆顶元素与当前堆的最后一个元素进行互...
<< 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 >>