关闭
当前搜索:

八大排序之快速排序(与优化)

快速排序,是八大排序中效率较高的一种。对于处理乱序的数据,有着显著的效果。它的算法思想主要是用到了分治算法的思想。在对数据的处理上,基本都处于nlog(n)的时间复杂度上。最差就是在处理有序的数组的时候,由于结构使然,它有可能会变成一个单分支树,时间复杂度迅速上升到0(n^2)。  快速排序的基本处理方法  (1)选择一个数作为基准.使其他的数,比它小的全部在它的左边,比它大的全部在它的右...
阅读(19) 评论(0)

八大排序之归并排序

归并排序,是一种稳定型的排序算法。它主要用到了分治算法的思想:将大规模的排序分隔成为一个个易解决的子问题。降低问题得的规模,是问题处理起来相对来说较为简单。 一般结构的归并排序,是一分为二。采用树状结构有,逐层二分,知道分到一个数(不用排序,本身是有序的)之后归并。将两个升序数组合并成一个升序数组。  但是单纯的归并,太过于死板。所以在对于大量数据进行排序的时候,一般在对于分到一定界限的数组,...
阅读(11) 评论(0)

位运算的一些运用的技巧。

位运算是直接可以操纵数据的二进制,在运算方面大大减少了内存的负担,使程序运行速度大大提升。所以巧妙的运用位运算可以使程序的运行效率提升不止一个档次。 常见的位运算有: 1、>>右移运算符。将数的二进制形式下最后一位去除,剩下的一次右移。如果是正数,最高位就补0,如果是负数,最高位就补1(一般强情况,也有可能补0)。产生的效果,给这个数除2. 2、<<左移运算符。将数的二进制形式下的最...
阅读(74) 评论(0)

剑指offer中的快排

一、快速排序的思想。 每一次的快排,都是选定一个坐标,把一个数组分隔成两部分。一边是比坐标的数大的数,一边是比坐标的数小的数。 之后把分隔的两个部分在各自选取一个坐标,在分别进行分隔。直到分隔的区间只剩一个数为止。 习惯上把标志位的数放在数组的最后一位上,这样方便进行比较。 快排的一部分过程 二、快速排序的代码。 public clas...
阅读(156) 评论(0)

学习设计模式心得与代码(三)

(六)桥接模式: 优点:1、使得抽象和实现可以独立扩展。 2、降低抽象和实现的耦合度。 includeusing namespace std; class Abstraction{//抽象出来实现的方法 public: virtual void operation()=0; virtual ~Abstraction(){...
阅读(62) 评论(0)

学习设计模式基础的心得与代码(二)

(四)适配器模式。 主要是为了统一接口,处理接口不匹配的问题。使函数在调用时简单,将某个类的接口转换成另一个客户期待的接口,实现了接口不匹配的类间通信,实现了软件的复用。 (1)对象适配: 类图:                                                                                        适配 代码: ...
阅读(73) 评论(0)

学习设计模式基础的心得与代码(一)

由于只学了几个简单的设计模式,就想分享一下感受。主要是:单例、抽象工厂、代理模式等几个简单的模式。 (一)单例模式: 属于创建对象模式的一种,及最整个程序,智能将类进行一次实例化。用到了静态函数与静态变量的特性,较为简单易懂。 代码:     class My{private:   int i;   int j...
阅读(72) 评论(0)
    个人资料
    • 访问:464次
    • 积分:73
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条