算法合集
我是流氓我怕谁啊
未曾清贫难成人
不经打击老天真
自古英雄出炼狱
从来富贵入凡尘!
展开
-
快速排序 挖坑填数,分而治之,终于弄明白了
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序...转载 2018-08-31 11:17:32 · 1502 阅读 · 1 评论 -
STL系列之三 queue 单向队列
queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。因此实现也是非常方便的。下面就给出单向队列的函数列表和VS2008中单向队列的源代码。单向队列一共6个常用函数(front()、ba...转载 2018-09-04 13:46:31 · 245 阅读 · 0 评论 -
STL系列之一 deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据。因此deque在随机访问和...转载 2018-09-04 13:56:06 · 80 阅读 · 0 评论 -
STL系列之二 stack栈
栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。因此实现非常的方便。下面就给出栈的函数列表和VS2008中栈的源代码,在STL中栈一共就5个...转载 2018-09-04 14:02:04 · 202 阅读 · 0 评论 -
白话经典算法系列之一 冒泡排序的三种实现
冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N。 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码: 下面对其进行优化,设置一个标志,如果这一...转载 2018-09-04 16:14:44 · 99 阅读 · 0 评论 -
STL系列之七 快速计算x的n次幂 power()的实现
计算x的n次幂最简单直接的方法就是相乘n次,很容易写出程序: 这种计算的效率显然不高,我们可以用二分法来加速计算x^n=x^(n/2)* x^(n/2)即x^10=x^5*x^5,这种计算N次幂只要相乘O(logN)次。运用递归的方法不难写出: 递归毕竟比较浪费时间,且会有很多重复计算。 因此最好能换成非递归的方式来实现二分法。 考虑x^23,可以先从x ->x^2 ->...转载 2018-09-03 19:59:01 · 619 阅读 · 0 评论