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

首页 / 操作系统 / Linux

排序算法总结之归并排序

排序算法总结之归并排序

一,归并排序介绍归并排序是一个典型的基于分治的递归算法。它不断地将原数组分成大小相等的两个子数组(可能相差1),最终当划分的子数组大小为1时(下面代码第17行left小于right不成立时) ,将划分的有序子数组合并成一个更大的有序数组。为什么是有序子数组???归并排序的递归公式:T(N) = 2T(N/2) + O(N)从公式中可以看出:将规模为 N 的原问题分解成两个规模 N/2 的两个子问题;并且,合并这两个子问题的代价是 O(N)---[后面的 +...
排序算法总结之堆排序

排序算法总结之堆排序

一,堆排序介绍堆是一个优先级队列,对于大顶堆而言,堆顶元素的权值最大。将 待排序的数组 建堆,然后不断地删除堆顶元素,就实现了排序。关于堆,参考:数据结构--堆的实现之深入分析http://www.linuxidc.com/Linux/2016-05/131796.htm下面的堆排序算法将数组中的元素从小到大排序,用大顶堆来实现。二,堆排序算法分析现给定了一维数组,需要将数组中的元素使用堆排序。首先,得创建一个堆,可以在这个给定的一维数组上建堆。 对N个元...
数据结构--堆的实现之深入分析

数据结构--堆的实现之深入分析

一,介绍以前在学习堆时,写了两篇文章:数据结构--堆的实现(上)和数据结构--堆的实现(下), 感觉对堆的认识还是不够。本文主要分析数据结构 堆(讨论小顶堆)的基本操作的一些细节,比如 insert(插入)操作 和 deleteMin(删除堆顶元素)操作的实现细节、分析建堆的时间复杂度、堆的优缺点及二叉堆的不足。二,堆的实现分析堆的物理存储结构是一维数组,逻辑存储结构是完全二叉树。堆的基本操作有:insert--向堆中插入一个元素;deleteMin--删...
数据结构--堆的实现(上)

数据结构--堆的实现(上)

1,堆是什么?堆的逻辑结构是一颗完全二叉树,但物理结构是顺序表(一维数组)。同时,此处的堆不要与JAVA内存分配中的堆内存混淆。这里讨论的是数据结构中的堆。参考:计算机中的堆是什么?http://www.linuxidc.com/Linux/2016-05/131799.htm2,数组实现堆的优势及特点由于堆从逻辑上看是一颗完全二叉树,因此可以按照层序遍历的顺序将元素放入一维数组中。注意为了方便,数组的元素存放从索引 1 处开始(不是0)。采用数组来存放就...
数据结构--堆的实现(下)

数据结构--堆的实现(下)

1,堆作为优先级队列的应用对于普通队列而言,具有的性质为FIFO,只要实现在队头删除元素,在队尾插入元素即可。因此,这种队列的优先级可视为按 时间到达 的顺序来衡量优先级的。到达得越早,优先级越高,就优先出队列被调度。更一般地,很多应用不能单纯地按时间的先后来分优先级,比如按CPU占用时间或者其它方式……在这种情形下,使用堆更容易表达优先级队列。2,堆的两个性质:①结构性质--堆从结构上看是一颗完全二叉树。然而,从物理存储上看,...
内存堆和栈的区别

内存堆和栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助。数据结构的栈和堆首先在数据结构...
二叉树链式存储和遍历

二叉树链式存储和遍历

1 二叉树的链式存储1.1 链式存储 顺序存储对空间利用率较低,所以,二叉树一般采用链式存储结构,用一个链表来存储一颗二叉树。二叉链表至少包含3个域:数据域data,左指针域lchild和右指针域rchild,如果再加上一个指向双亲结点的指针就变成了三叉链表。二叉树的链式存储结构如下:/** * 二叉链表结点 * @author cyhe */private class Node{Integer data;Node lchild, rchild;} ...
由浅入深地分析 写时拷贝(Copy On Write)

由浅入深地分析 写时拷贝(Copy On Write)

本文旨在通过对 写时拷贝 的四个方案(Copy On Write)分析,让大家明白写时拷贝的实现及原理。深拷贝效率低,我们可以应引用计数的方式去解决浅拷贝中析构多次的问题。首先要清楚写时拷贝是利用浅拷贝来解决问题!!方案一class String{private: char* _str; int _refCount;};方案一最不靠谱,它将用作计数的整形变量_refCount定义为类的私有成员变量,任何一个对象都有它自己的成员变量_refCount,它...
Linux下的文件查找命令——find

Linux下的文件查找命令——find

Linux下几个常见的文件查找命令:which 查看可执行文件的位置whereis 寻找特定文件,查看文件的位置locate 配合数据库查看文件位置find 实际搜寻硬盘查询文件名称通常情况下find命令并不是很常用,大家都优先使用whereis和locate命令来查找,因为whereis和locate命令都是利用数据库来查找文件所在,并没有实际查询硬盘,所以速度很快,节省时间。但是我们的find命令依然很强大,它的查找条件相当多,对于用其他...
<< 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 >>