liyuxia713

蹒跚前行者

常用链接

统计

Algorithms

C++

最新评论

Algorithms

基本排序方法及分析(九):Randomized-Quicksort快速排序的随机化版本
     摘要: Quicksort是一个很好的比较排序算法,但是其最坏情况运行时间是O(n^2), 还不如Mergesort的O(nlgn),
如何改进Quicksort? 答案是:引进随机化思想。
一种方法: 对给定的待排序序列,随机地重排列
另一种方法:随机选取pivot

给出第二种方法的代码  阅读全文

posted @ 2010-01-24 14:36 幸运草 阅读(3297) | 评论 (0)  编辑

Order Statistics 顺序统计(找出第i小元素)
     摘要:
Order Statistics 顺序统计
Select(int* a, int n, int ith): 从给定的n个元素中找出第i个小的元素
思想:QuickSort的Partition方法进行分割
如果 i = rank(pivot), 则返回a[k]
如果 i < rank(pivot), 则从前半部分中找第i个小的元素
如果 i > rank(pivot), 则从后半部分中找第i-rank(pivot)个小的元素
最坏运行时间O(n^2)
平均运行时间O(nlgn)   阅读全文

posted @ 2010-01-21 16:29 幸运草 阅读(1090) | 评论 (0)  编辑

基本排序方法及分析(八):CoungtingSort 计数排序
     摘要:
计数排序对a[0],...,a[n-1]进行排序,其中1 <= a[i] <= m
计数排序不是基于比较的排序方法,从而最坏情形下的运行时间也不受比较的排序方法最快O(nlgn)的限制。
计数排序的运行时间是O(n+m)  阅读全文

posted @ 2010-01-18 15:50 幸运草 阅读(420) | 评论 (0)  编辑

基本排序方法及分析(七):HeapSort 堆排序

posted @ 2010-01-18 15:45 幸运草 阅读(618) | 评论 (1)  编辑

同时求最大最小值

posted @ 2009-05-07 21:15 幸运草 阅读(724) | 评论 (0)  编辑

基本排序算法及分析(六):桶式排序
     摘要: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法。
可以对 n==m, n != m分别处理。写代码时需要注意的的是a[i]是访问第i-1个元素,而非第i个。
n != m时,运行时间为O(m+n),辅助空间为O(m)
n == m时特殊处理,运行时间为O(N), 辅助空间为O(1)   阅读全文

posted @ 2009-04-23 19:03 幸运草 阅读(1242) | 评论 (0)  编辑

基本排序算法及分析(五):归并排序
     摘要: 归并排序思路:将序列从中间分割成两部分,分别递归归并排序,后将两个子序列合并。
归并排序虽然是经典排序里比较最少的算法,但有大量的复制操作,还需要O(N)的辅助空间,从而一般不用于主存,也不利于c++编程。
Java中比较操作耗时多,而复制则耗时少,从而归并排序是Java中主要排序方法。
而在C++ STL中快速排序是基本排序方法。  阅读全文

posted @ 2009-04-23 10:50 幸运草 阅读(997) | 评论 (0)  编辑

基本排序算法及分析(四):快速排序
     摘要: 快速排序:确定一个枢纽元,一次遍历后将数组划分成两个部分,第一部分均比枢纽元小,第二部分都比枢纽元大,然后对这两个数组进行快速排序,是一种递归的方法
平均运行时间O(Nlog(N)),最坏运行时间O(N^2)
最坏情形:对于预排序的序列。
对与枢纽元相等的元素处理:
i,j都停止:会比较相等元素,但是可以划分成长度相当的两个子数组
i,j都不停止,不会比较相等元素,但是可能产生长度不平衡的两个子数组(与枢纽元相等的元素较多时)枢纽元的选取:
1. 选取第一个元素做枢纽元:对于(部分)预排序的序列运行时间O(N^2)
2. 随机生成枢纽元:能避免上述问题,但是产生枢纽元的代价高
3. 三数中值分割法:选取左端,右端,中间位置三个元素的中值  阅读全文

posted @ 2009-04-22 16:56 幸运草 阅读(2822) | 评论 (8)  编辑

基本排序算法及分析(三):shell排序

posted @ 2009-04-22 16:50 幸运草 阅读(851) | 评论 (0)  编辑

基本排序算法及分析(二):冒泡排序

posted @ 2009-04-22 16:46 幸运草 阅读(599) | 评论 (0)  编辑

Full Algorithms Archive