一、序言 在使用partition-exchange排序算法时,如快速排序算法(即使选择了一个好的关键元素pivot values),我们往往面临一个很尴尬的境地--当排序对象中有很多重复的元素,partition-exchange排序算法表现很不尽如人意。当所有元素都相等时,这就特别容易理解了。....
分类:
编程语言 时间:
2015-05-31 06:41:29
阅读次数:
172
在前面博客有写英文版的快速查找实现例子,在复习的时候,有了新的领悟。【思想】快速排序算法关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的移动到数组左边,比选择的数字大的移动到数组的右边。【实例说明】快速排序数组data[] = {2,4,9,3,6,7,1,5},设置第一个数为基准值,将其他元素与其进行比较,数组长度为8,设置两个指针i,j分别指向待排序数组首末下标,...
分类:
编程语言 时间:
2015-05-27 22:50:51
阅读次数:
272
说到算法,暑假就要去实习了,这时才感觉到数据结构和算法的重要性,虽然大二时候已经学过,但是基本用不到,导致现在基本忘了,现在重新拾起,重新把以前学过的和没有学过的算法都理一遍实现一遍!!!
给自己一个任务——每天一个算法!!!
快速排序算法:是对冒泡排序的一种改进,若初始记录序列按关键字pivotNum有序或基本有序,则将会蜕化为冒泡排序,此时时间复杂度为O(n²)。否则其平均时间复杂度为O(...
分类:
编程语言 时间:
2015-05-27 14:07:35
阅读次数:
189
今天来说一说快速排序:基本思想:
任取一个元素 (如第一个) 为轴点
所有比它小的元素一律前放,比它大的元素一律后放,形成左右两个子表
对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个
注意:
每一趟的子表的形成是采用从两头向中间交替式逼近法
由于每趟中对各子表的操作都相似,可采用递归算法
代码实现:#include
using namespace std;/...
分类:
编程语言 时间:
2015-05-25 20:25:14
阅读次数:
155
快速排序算法实现代码://============================================================================// Name : QuickSort.cpp// Author : Danny// Versio...
分类:
其他好文 时间:
2015-05-24 06:29:39
阅读次数:
149
数据结构与算法---快速排序及折半查找:1)编程实现数据序列的输入2)实现快速排序算法,并对输入的序列排序后输出;3)实现折半查找算法,并在步骤(2)排序后的序列上,进行任意地查找,并输出查询结果。(查找成功/不成功;等于关键值的元素个数=1或>1) 1 #include 2 #define ...
分类:
编程语言 时间:
2015-05-22 00:08:23
阅读次数:
565
快速排序2(算法交换链表节点,平均时间复杂度O(nlogn),不考虑递归栈空间的话空间复杂度是O(1))这里的partition,我们选取第一个节点作为枢纽元,然后把小于枢纽的节点放到一个链中,把不小于枢纽的及节点放到另一个链中,最后把两条链以及枢纽连接成一条链。这里我们需要注意的是,1.在对一条子...
分类:
其他好文 时间:
2015-05-20 23:38:54
阅读次数:
199
今天在实现一个查找功能的时候,需要用到排序,因为用的是C开发,就把自己之前写的快速排序算法直接拿来用了。代码如下: 1 static void QuickSort(ElemType *array,int left,int right) 2 { 3 if(left > right) 4 ...
分类:
编程语言 时间:
2015-05-20 17:49:38
阅读次数:
164
算法:排序和查找(二分查找,归并排序,快速排序),位运算等。查找:顺序查找,哈希查找,二叉排序树查找,哈希表。二分查找可以解决:"旋转数组中的最小数字","数字在排序数组出现的次数"等问题。哈希表:优点:O(1)时间内查找一个元素的效率最高。缺点:需要额外的空间来实现哈希表。二叉排序树查找:对应二查...
分类:
编程语言 时间:
2015-05-18 22:33:39
阅读次数:
280
public static void quickSort(int[] arr, int low , int height){ int l=low, h = height; if(low arr[low]){ ...
分类:
编程语言 时间:
2015-05-17 10:42:59
阅读次数:
150