算法精解
烂笔_头
这个作者很懒,什么都没留下…
展开
-
算法精解----快速排序(方式1)
前言:快速排序工作原理就是先在序列中找到一个基准值,我称为K值。然后小于K的放在K的前面,大于K的放在K的后面。其实我们每操作K一次,就相当于把序列分为两个部分,一部分大于K,一部分小于K,就这样周而复始。我们可以推测出平均的时间复杂度为lgn,为啥这样说呢。但是书本上说的为nlgn,其实他是每次都进行了一次最优值筛选,但是我没有这样做。我是直接选择中间位置的值当做K值。好了下面是代码,待原创 2016-10-10 16:09:36 · 498 阅读 · 0 评论 -
算法精解----快速排序2
前面排序方法有个很明显的bug就是递归次数很多,而且递归进去的时候什么也不干。这样非常浪费CPU资源,所以呢,现在说说另外一种快速排序的方法,这种方法和前面的不同,前面的方法是K值分别和大于它的值和小于它的值进行交换,这样也就是说,如果发生交换操作,那么只能够是一个大于的值或者一个小于的值。但是现在的方法就是如果发生交换,那么将会是大于值和小于值同时进行交换,就是两两交换。代码如下:void原创 2016-10-10 19:03:18 · 428 阅读 · 0 评论 -
算法精解----插入排序
插入排序很简单,就是换换换我就直接贴代码了void insSort(int *p, int size){ int i = 0; int j = 0; int temp = 0; if (size <= 1) { return; //只有一个元素那就别浪费CPU资源了,回家歇歇吧 } i = 0; j = 0; for (j = 1; j < size; j++原创 2016-10-10 20:12:11 · 369 阅读 · 0 评论 -
算法精解----log符号什么意思
在将算法之前,我们先学习一个高中学习的符号----log下面是从网上转载的一个解答:log表示对数.如果a^n = b(a>0,且a≠1),那么数n叫做以a为底b的对数,记做n=log(a)b,【a是下标】其中,a叫做“底数”,b叫做“真数”.相应地,函数y=logaX叫做对数函数.对数函数的定义域是(0,+∞).零和负数没有对数.底数a为常数,其取值范围是(0,1原创 2016-09-30 08:59:00 · 2729 阅读 · 0 评论 -
算法精解----递归(自我总结)
保留编辑原创 2016-09-30 09:05:44 · 387 阅读 · 0 评论 -
算法精解----递归(基本递归)
保留编辑原创 2016-09-30 09:04:02 · 475 阅读 · 0 评论 -
算法精解----递归(尾递归)
保留编辑原创 2016-09-30 09:04:41 · 420 阅读 · 0 评论