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

首页 / 操作系统 / Linux

归并排序的实现

归并排序的实现

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]中void MemeryArray(int a[], int n, int b[], int m...
快速排序 快速搞定

快速排序 快速搞定

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定。快速排序是C.R.A.Hoare于1962年提出的一...
堆与堆排序

堆与堆排序

堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图...
C++ 类的静态成员详细讲解

C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即<类名>::<静态成员名>。在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个...
快速算法实现----挖坑填数

快速算法实现----挖坑填数

快速排序作为时间复杂度为o(nlogn)的算法,在实际中经常用到。下面简单的讲解一下快速排序算法的实现思路。看看 http://www.linuxidc.com/Linux/2014-09/107317.htm思路写的非常好。挖坑填数,非常形象。下面简单的介绍一下。快速排序用到时分治法的思想。主要可以分为以下的三步。1、选定一个数作为基数2、将大于这个的基数的数全放在右边,小于这个基数的数全部放在左边3、对左右区间中的数重复1、2步骤,直到区间中只有一个数...
二路归并排序C++实现

二路归并排序C++实现

/*归并排序的基本操作是将两个或两个以上的记录有序序列归并为一个有序序列。最简单的情况是,只含一个记录的序列显然是个有序序列,经过"逐趟归并"使整个序列中的有序子序列的长度逐趟增大,直至整个记录序列为有序序列止。二路归并排序则是归并排序中的一种最简单的情况,它的基本操作是将两个相邻的有序子序列"归并"为一个有序序列,如右侧所示。这个操作对顺序表而言是极其容易实现的,只要依关键字从小到大进行"复制"即可,如下算法所示。*/#include <iostr...
Java之生成JAR包

Java之生成JAR包

Java编写的application程序是否能够最终形成一个类似于exe一样的可执行文件,难道就只能用命令行运行?通常有两种,一种是制作一个可执行的JAR文件包,然后就可以像.chm文档一样双击运行了;而另一种是使用JET来进行编译。但是JET是要用钱买的,而且据说JET也不是能把所有的Java程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行JAR 文件包的方法就是最佳选择了,何况它还能保持Java的跨平台特性。下面就来看看什么是JAR文件包吧...
Java之static关键字

Java之static关键字

介绍:1、在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。2、用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static成员。(静态方法不再是针对于某个对象调用,所以不能访问非静态成员)3、可以通过对象引用或类名(不需要实例化)访问静态成员。注:静态变量多用于计数功能。(单例模式之类的经常用...
Java之this关键字

Java之this关键字

this使用范围 1、在类的方法定义中使用的this关键字代表调用该方法对象的引用。2、当必须指出当前使用方法的对象是谁时,要使用关键字this。3、有时使用this可以处理方法中成员变量和参数重名的情况。4、this可以看做是一个变量,它的值是当前对象的引用。注:this一般出现在方法中,当方法没有被调用时。并不知道this指向那个具体的对象。当某个对象调用有this的方法时,this就指向调用这个方法的对象。程序code:public class T...
AngularJS 中的通信(发布订阅模式)

AngularJS 中的通信(发布订阅模式)

现在几乎满世界的人都在问! 外面有人么? 这里是 USS AngularJS, 我们遇到麻烦了,我们的服务讲得是克灵贡语(Klingon) 而我们的控制器不能同它们的Ferengi 指令通信了. 有人能帮助我们么!我已经不知道有多少次遇到这种有关什么才是AngularJS里面的组件通信的最佳方式这样的问题了. 很多时候答案都会是为此使用 $rootScope 对象去向任何想要收听的人广播$broadcast出一条消息. 然而,那还真不是做这件事的最佳方式....
AngularJS 项目构建中的组织结构

AngularJS 项目构建中的组织结构

前几天刚刚把项目的组织结构进行了一次重构,这是前端项目至今第二次进行组织结构上大的变化,也是一个"folder by type"到"folder by feature"的过程.为什么有这个过程?因为感觉到项目的日益庞大,每次修改一个地方我可能要打开三四个文件,比如说一个页面上的哪里要修改.那么首先是页面的HTML,然后是Controller,Less,对应接口的service文件等等.整个项目是我一手构建的可能还不会出问题,只是找的时候要回想一下对应的文件...
AngularJS 中得 scope 作用域梳理

AngularJS 中得 scope 作用域梳理

$scope 的使用贯穿整个 AngularJS App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 $scope,同样的 $scope 发生改变时也会立刻重新渲染视图.有了 $scope 这样一个桥梁,应用的业务代码可以都在 controller 中,而数据都存放在controller 的 $scope 中.$rootScopeAngularJS 应用...
AngularJS应用技巧分享

AngularJS应用技巧分享

angular的核心思想是通过数据驱动一切,其他东西都是数据的延伸.套用Javascript一切皆对象的思想,在angular中可以说一切皆数据. ” 关于项目构建 (1) requirejs以及Yeoman 在刚开始接触或者使用Angular的时候,总会疑惑与类似的问题,我实践的答案是不需要requirejs或者Yeoman.前者不使用,因为angular本身有module的实现.后者是因为Angular组织结构以及项目构建完全不必要弄得...
Android开发中的多线程

Android开发中的多线程

多线程案例——计时器这个案例中,屏幕启动之后,进入如图所示的界面。屏幕上有一个文本框用于显示逝去的时间,此外还有一个“停止计时”按钮。案例的用例图如图所示。能够在屏幕上“实时地显示”时间的流逝,单线程程序是无法实现的,必须要多线程程序才可以实现,即便有些计算机语言可以通过封装好的类实现这一功能,但从本质上讲这些封装好的类就是封装了一个线程。综上所述,完成本案例用到的知识及技术如下: ...
Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型。从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是由硬件系统或JVM导致的故障,java定义该故障为Error,这类问题是用户程序不能够处理的;另外一种问题是程序运行错误,java定义为Exception,这种情况下,可以通过程序设计调整来实现异常处理。因此,用户定义的异常类型必须是Throwable的直接或间...
Linux Shell 中的判断结构

Linux Shell 中的判断结构

IF/THEN 结构判断一段代码的返回值是否是0(按照UNIX惯例,0代表 是),如果是 0 ,就执行一段特定的代码;Shell中存在一个专用的命令[b] [[/b] (也就是左大括号)。他和test是同义词,引进他是为了提高效率。这个命令把他的参数看成是比较语句或者文件测试语句,并且返回相应的值;2.2版本的时候,Bash引进了扩展测试命令 [[ ]] ,他的比较方式跟其他的语言很相似; 注意:[[ 是一个关键字,不是一个命令,[[ ]] 才是一个命令!...
PHP中的 empty() 函数和 isset() 函数

PHP中的 empty() 函数和 isset() 函数

在开发过程中,经常会遇到判断变量存不存在以及是否为空的情况,特别是数组,如果访问数组的一个不存在的元素的话,会有Notice级别的错误爆出来,也是一种逻辑不严谨的表现。首先,看一下 empty() 函数:判断一个函数是否为空。那么在PHP中,什么样的情况被看成是空呢?第一种是这个变量不存在;第二种是这个变量的值相当于 FALSE。也就是说 empty($var) 相当于 !isset($var) || $var == FALSE。再来看isset()函数:...
C语言当中的作用域

C语言当中的作用域

在C语言当中,变量的作用域分为两种:全局变量和局部变量。在所有函数之外声明的变量是全局变量,这些变量可以在整个程序当中被访问;局部变量是在某一对大括号({})之间生命的变量,这些变量在这对大括号之外是不可见得,也就是说被访问的话会提示变量未定义。例子:#include <stdio.h>int var = 10;int main(){ printf("%d ", var); int var = 20; printf("%d ", var)...
<< 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 >>