随笔分类 - Algorithm
算法学习
摘要:快排 int partition(vector<int>& nums, int start, int end) { int tmp = nums[start]; int i = start, j = end; while (i < j) { while (i < j && nums[j] >= tm
阅读全文
摘要:直接插入排序适用于基本有序的排序表和数据量不大的排序表。 希尔排序(Shell)又叫缩小增量排序 基本思想如下: -设待排序列有n个元素,取一整数gap(gap<n)作为间隔,将全部元素分为gap个子序列,所有距离为gap的元素放在同一个子序列中-在每一个子序列中分别采用直接插入排序-然后缩小间隔g
阅读全文
摘要:问题描述: 输入是由一个随机过程产生的[0, 1)区间上均匀分布的实数。将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…,[k/n, (k+1)/n ),…将n个输入元素分配到这些桶中,对桶中元素进行排序,注意,
阅读全文
摘要:思路参考《算法导论》P110 另外,这位老哥讲的很不错:http://www.cnblogs.com/kkun/archive/2011/11/23/2260275.html 代码 运行结果如下:
阅读全文
摘要:任何比较排序(归并排序,插入排序等等)的时间复杂度在最坏的情况下都需要做Ω(n * lgn)次比较,而这里的的计数排序由于它不是基于比较排序的思路,所以它的复杂度不收这个限制,它的时间复杂度为Θ(n),为线性时间。同时,计数排序一个重要的性质就是它是稳定的,也就是说,对于两个相同的数来说,在输入数组
阅读全文
摘要:思路参考《算法导论》P95 这里有位老哥的文章写的挺形象的呀 http://developer.51cto.com/art/201403/430986.htm 我是参照书上实现的,觉得挺简单的 代码 运行结果:
阅读全文
摘要:这个没啥好说的,写完上一个正好写一下这一个,都是基于堆实现的,不过这里没有用C++内置数组,原因是添加删除元素有点麻烦,所以用了vector来实现。 详细内容见《算法导论》P90 代码 1 // 基于最大堆实现最大优先队列.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include
阅读全文
摘要:思路参考《算法导论》P84 堆排序中用到的最重要的就是堆这种数据结构,也正是因为这种数据结构能把时间复杂度控制在O(n * lgn) heapsort算法主要依赖于两个函数 MAX_HEAPIFY(int *A,int i,int len) 用于维护最大堆,时间复杂度为O(lgn),注意书上描述这个
阅读全文
摘要:最近在看《算法导论》,刚看到分治策略里的最大子数组问题,觉得这个写的不错,记录在这里,方便自己以后复习。 问题描述见《算法导论》P38 原文地址:https://www.cnblogs.com/Christal-R/p/Christal_R.html 代码如下: 运行结果如下:
阅读全文
摘要:思路参考: http://www.cnblogs.com/kkun/archive/2011/11/23/2260281.html 代码如下:
阅读全文
摘要:思路请参考: http://www.cnblogs.com/kkun/archive/2011/11/23/2260280.html 代码如下:
阅读全文
摘要:同志们,转眼就快三个月没见了,光阴似箭,岁月催人老 暑假转眼就过去了,大三上也过去一半了,然而感觉这段时间的收获甚小,不免感慨自己蹉跎岁月 这学期有几门重要的课,学起来也有点难,还有几门我听完一节课后就不想听的课。。。 编译原理,汇编语言,计算机组成原理,这几门课其实感觉还是有点意思的,最近在看汇编
阅读全文

浙公网安备 33010602011771号