快速排序小结   大纲:          1.快排的原理          2.最坏情况          3.优化快排的方法          4.一般写法与更好的写法 1.快排的原理(本文重点)          伪代码:                    Void sqsort(in
1、插入排序(Insertion Sort) 基本思路:将一个记录插入到已排序好的有序表中,从而得到一个新的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 1 void InsertSort(int a[]) { 2
1.题目描述: 2.解题思路:    本题是要堆一个链表进行排序,并且要求时间复杂度为 O(n log n)。很明显,要用到分治的思想,用二分法进行归并排序:找到链表的middle节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个已排好序的链表进行Merge。   分为三步:   (1
题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。 写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下:
1.题目描述: 2.解题思路:   题意:求一个字符串的最长回文子串。   方法一:中心扩展法。遍历字符串的每一个字符,如果存在回文子串,那么中心是某一个字符(奇数)或两个字符的空隙(偶数),然后分两种情况(奇数或偶数)向两边扩展。本文主要介绍这种方法。   因为回文字符串是以中心轴对称的,所以如
Labyrinth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1114    Accepted Submission(s):
冒泡排序_c++ GitHub 文解 冒泡排序是采用类似气泡上升的方式对数据进行排序. 例如: 我们这里有10个元素,具体数值随意,对每个数值标记上 1~10 的标记. 首先将标记为 1 的数值与标记为 2 的数值进行比较,如果(1)大于(2)我们就将(1)与(2)互换数值,否则不做任何操作,然后将
原文:http://www.cnblogs.com/skywang12345/p/3561803.html#a33 没有C#版本的。。是不是很方。。不过图和说明很好,引用一下 双向链表 双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后
选择排序_c++ GitHub 文解 选择排序的核心思想是对于 N 个元素进行排序时,对其进行 K = (N - 1) 次排序,每次排序从后(N + 1 - K)个数值中选择最小的元素与以 (K - 1) 为下标的元素互换,最后得到一个升序列表. 选择排序与冒泡排序有一些相似,本质上都是逐次排序.
插入排序_c++ GitHub 文解 插入排序的核心思想是针对于 N 个元素进行排序时,共进行 K = (N-1) 次排序,第 M 次排序时将第 M + 1 个元素插入前 M 个元素中进行排序. 图解 代码 void insertArray(short * pArray, short count
Convex Hull   概述       计算n维欧式空间散点集的凸包,有很多的方法。但是如果要实现快速运算则其难点在于:如何快速判断散点集的成员是否是在凸集的内部。如果可以简化判断的运算过程,则可以极大简化迭代过程中的运算负荷。下面简述一下我用单纯形做的一个在高维欧式空间下模仿分形绘制过程快速