希尔排序对于多达几千个数据项的,中等大小规模的数组排序表现良好,希尔排序不像快速排序和其它时间复杂度为O(n*logn)的排序算法那么快,因此,对非常大的文件排序,它不是最优选择,但是希尔排序比选择排序和插入排序这种时间复杂度为O(n²)的排序要快的多,并且它非常容易实现,代码简短 希尔排序也...
分类:
其他好文 时间:
2014-07-12 13:06:10
阅读次数:
190
部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我...
分类:
其他好文 时间:
2014-07-12 08:43:31
阅读次数:
313
快速排序的基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交...
分类:
其他好文 时间:
2014-07-11 20:40:00
阅读次数:
231
首先说明一下快速排序是对冒泡排序的改进。为什么这么说呢?想一下冒泡排序,它把序列分成了两部分,前半部分无序,后半部分升序排列,并且后半部分的数都大于前半部的数。由此可得到快速排序和冒泡排序的一些共同点:都要经历n趟排序每趟排序要经历O(n)次比较都是后半部分元素比前半部大而不同之处就在于冒泡排序的交...
分类:
其他好文 时间:
2014-07-11 10:47:33
阅读次数:
251
今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不...
分类:
其他好文 时间:
2014-07-11 10:34:18
阅读次数:
163
由于某个需求,需要如题的转换,废话不多说,直接贴代码了,其实挺丑了,备用了func (this *Server) socketParserHandler(client *genTcpServer.Client, fullData []byte) { fmt.Println("original ...
分类:
其他好文 时间:
2014-07-09 15:33:31
阅读次数:
150
#include
using namespace std;
int partition(int *a,int p,int r)
{
int x=a[r];
int i=p-1;//note i important which is used for
//storage the number smaller than flag x=a[r]
for (int j=p;j<r;j++...
分类:
其他好文 时间:
2014-07-08 21:06:59
阅读次数:
232
题目:有两个有序数组a,b,现需要将其合并成一个新的有序数组。
简单的思路就是先放到一个新的数组中,再排序。但是这样的没体现任何算法,这里考的不是快速排序等排序算法。关键应该是如何利用有序已知这个条件。可以这样想,假设两个源数组的长度不一样,那么假设其中短的数组用完了,即全部放入到新数组中去了,那么长数组中剩下的那一段就可以直接拿来放入到新数组中去了。
public class MergeTw...
分类:
其他好文 时间:
2014-07-08 16:54:20
阅读次数:
161
一、 快速排序的描述
1、 快速排序是一种原地排序的算法,最坏情况下的时间复杂度为Θ(n^2),期望的运行时间为Θ(n logn),且其中隐含的常数因子较小。
2、 快速排序分三个步骤:
分解:数组A[p...r]被划分成两个数组A[p...q-1]和A[q+1...r],使得A[p...q-1]中的元素都小于等于A[q],A[q+1...r]中的元素都大于等于A[q]。下标q在这个划分过程...
分类:
其他好文 时间:
2014-07-08 15:31:28
阅读次数:
203
之前我们介绍了几种O(nlgn)的排序算法:快速排序、合并排序和堆排序,本节我们介绍基于比较的排序算法的下界以及几个线性时间的排序算法——计数排序、基数排序、桶排序。...
分类:
其他好文 时间:
2014-07-08 14:10:28
阅读次数:
243