堆排序

来源:互联网 发布:悉尼类似淘宝的app 编辑:程序博客网 时间:2024/06/06 00:09

堆排序堆的一个重要应用,堆排序,主要是将将一组数据排成有序的序列,如何实现?先将这组数据放到二叉树中建大堆,然后再把第一个数据与最后一个交换,最大的数据就在最后,然户把其余n-1个数据继续调成成大堆,再把第一个和次大的交换,每次排序后,无序的数据范围缩小1,直到最后这个无序的序列只剩最后一个数据,就会完成排序分两步:一:建大堆(升序)//向下调整建大堆void _Ajus...       

2017-03-30 16:23阅读(38)评论(0)

 


面试常见题之TopK问题                   

一:堆的一个应用就是优先级队列:优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。如:template>class PriorityQueu...       

2017-03-30 08:38阅读(63)评论(0)

 


        Linus下find指令                   

一:find指令Linus下find指令在目录结构中搜索文件;并执行指定的操作;1--命令格式find pathname -options[-print -exec -ok ..]2--命令功能用于文件树中查找文件,并做出相应的处理3--命令参数pathname:find命令查找的目录路径,用.表示当前目录,用/表示系统目录。当我们在Linus下用find . te...       

2017-03-29 13:07阅读(98)评论(0)

 


        linus下touch指令对时间影响                   

一:touch->a 文件名修改atime,也会改变ctime。二:touch ->c文件名我们再创建一个新文件观察结果:三:touch -->d将atime和mtime更新为指定时间,而ctime为当前时间四:touch -->m将atime为当前时间,由于改变mtime而ctime发生改变。五:touch -->t 文...       

2017-03-29 01:01阅读(10)评论(0)

 


        c++中重载,覆盖和隐藏的区别                   

一:重载  在c++中把几个语义,功能相似的几个函数用同一个函数名表示; 为什么要重载呢? 1:函数名被重载,函数重载便于记忆,提高了函数的易用性, 如:void fun(int );void fun(float);void fun(char);2:C++类中的构造函数需要重载机制,c++规定类的构造函数的名字必须与类名相同;那么如何实现几种不同的方法来创建对象,这就需要重载机制来实现;...       

2017-03-28 15:07阅读(13)评论(0)

 


        linus下Access time和Modify time 和 Change time的区别                   

一:stat指令下Access和Modify和Change的区别: Access 指最后一次读取的时间 Modify 指最后一次修改数据的时间 Change 指最后一次修改原数据的时间 我们以text.c为例:  二:touch指令对时间的影响  touch+filename: 1:当前目录下不存在时,touch可以创建一个新的名字为filename的文件; 2:当前目录下存在名...       

2017-03-27 13:59阅读(51)评论(0)

 


        Linus下的权限设置                   

一:Linus下的权限管理: 1:文件访问者的分类: a )文件和文件目录的所有者 u –User b )文件和文件目录的所有者所在的组的的要不过户 g–Group2:文件访问权限的种类 基本权限: a )读( r/4 )–read对于文件来说,具有读取文件内容的权限,对于目录来说具有浏览该目录信息权限。 b)写( w/2 )– write对于文件来说,具有修改文件内容的权限,对于目录来...       

2017-03-27 13:47阅读(23)评论(0)

 


堆                   

一:堆堆数据结构是一种数组结构可以看做是一个完全二叉树;堆的数据存储分为二种大堆:每个父亲节点都大于孩子节点小堆:每个父亲节点都小于汉子节点接下来就是建堆,建堆实际就是讲一个二叉树调整成我们所需要的结果。方法:从第一个非叶节点开始,找到它的最大值(大堆调整)或者是最小值(小堆调整),然后再与父节点比较;我们通过仿函数,来选择我们需要的是大堆还是小堆。...       

2017-03-26 07:46阅读(13)评论(0)

 


二叉树的递归和非递归                   

二叉树的几种遍历算法  1.二叉树的前序遍历   2.二叉树的中序遍历   3.二叉树的后序遍历   4 .二叉树的后序遍历一. 二叉树的前序遍历  前序遍历算法是判断节点是否为空,如果不为空,先访问根节点,再访问左子树,最后访问右子树;  前序的递归: 根->左子树(为空)->右子树。对于每一个子树又可以用同样的访问顺序来遍历。void PrevOrder()    {...       

2017-03-19 12:14阅读(17)评论(0)

 


二叉树                   

二叉树一:树 树是N个有限个数的集合,形状像一颗到过来的树。如下:  树是一种特殊的数据结构有点像链表,每个节点都包括指针域和一个数据域。  根节点:树的第一个节点; 节点的度:树拥有子节点的个数; 叶节点:没有子节点的节点; 树的高度:树中距离根节点最远的路径长度。 父子节点:一个节点father指向另外一个节点child,father这个节点就是父节点,child这个节点就是子...       

2017-03-19 10:49阅读(23)评论(0)

 


【STL】之Vector的模拟实现                   

一:迭代器失效?前面我们了解迭代器其实就是智能指针,可以通过运算符的操作来实现接口函数,但有时有会存在安全隐患。这就是我们常说的迭代器失效。所谓的迭代器失效其实是找某个位置的元素,删除,然后再通过operator++,operator--访问下一个元素,会出现野指针造成崩溃的问题;如下:#include#includeusing namespace std;void Test...       

2017-03-07 23:26阅读(21)评论(0)

 


【c++】模板实现vector和list                   

前面我们也知道模板是泛型编程的基础,是实现类型无关的代码,是一种代码复用的重要手段。一:模板实现Vector:.h文件#pragma once #include#include#includeusing namespace std;templateclass Vector{public:    //构造    Vector()...       

2017-03-02 13:31阅读(16)评论(0)

 


【STL】list迭代器的模拟实现                   

一:list:list 简单点说就是c++标准库(STL)的一种容器,可以实现插入和删除的操作,实质和双向链表相同,但这个双向链表时带有头结点的双向链表。二:迭代器 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的...       

2017-02-28 09:26阅读(19)评论(0)

 


        c++强制类型转换                   

一:C语言常见的强制类型的转换有两种隐式类型的转换和强制转换所谓的隐式类型的强转就是相近的类型的转化,强制转换就是讲类型如下:int main(){    int i = 1;    double j = i;    printf("%d,%2f\n", i, j); //隐式    int *p = &i;   int address = (int)p://强转...       

2017-02-27 17:04阅读(14)评论(0)

 


智能指针                   

一.RAII(资源分配即初始化)就是定义一个类来进行资源的分配和释放,在构造函数完成资源的初始化,在析构函数完成资源的清理和释放。可以保证资源的正确初始化和释放。using namespace std;templateclass AA{public:    AA()    {        cout << "AA()" << endl;    }    ~AA()...       

2017-02-23 11:02阅读(25)评论(0)

 


面试常见题之虚函数及底层的实现                   

一.菱形对象模型(成员函数+虚函数的覆盖)class AA{public:    virtual void fun1()    {        cout << "AA::fun1()" << endl;    }public:    int _aa;};class BB :public AA{public:    virtual    void fun1()...       

2017-02-21 09:50阅读(28)评论(0)

 


模板实现顺序表                   

一.模板模板就是实现与类型无关的代码,增加了代码的复用性。模板分为模板函数和模板类模板函数的格式 typedef...       

2017-02-20 10:53阅读(22)评论(0)

 


        C++对象模型                   

一.单继承的对象模型class Car{public:    virtual void func1()    {        cout << "Car::func1()" << endl;    }    virtual void func2()    {        cout << "Car::func2()" << endl;    }protected:  ...       

2017-02-16 23:51阅读(14)评论(0)

 


菱形虚拟继承和多态                   

一.菱形继承(多继承)class AA{public:    int _aa;};class BB : public AA{public:    int _bb;};class CC : public AA{public:    int _cc;};class DD :public BB, public CC{public:    int _dd;...       

2017-02-16 00:09阅读(30)评论(0)

 


        Sting类的实现                   

一.浅拷贝class String{public:    String(const char *str ="")        :_str(new char[strlen(str) + 1])    {        strcpy(_str, str);    }    s2 (s1)    String(const String &s)    {...

0 0
原创粉丝点击