posted @ 2013-04-03 15:31
随笔分类 - 排序
摘要:主机平台:Gentoo Linux withKernel Linux 3.4.36-gentoo编译器版本:gcc (Gentoo 4.6.3 p1.9, pie-0.5.2) 4.6.3原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/8756074堆排序(Heap Sort)堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(或最小)的记录.堆排序的最坏时间复杂度为O(n
阅读全文
摘要:问题描述:位图排序是一种效率极高(复杂度可达O(n))并且很节省空间的一种排序方法,但是这种排序方法对输入的数据是有比较严格的要求(数据不能重复,大致知道数据的范围)。位图排序即利用位图或者位向量来表示集合。举个例子,假如有一个集合{3,5,7,8,2,1},我们可以用一个8位的二进制向量set[1-8]来表示该集合,如果数据存在,则将set相对应的二进制位置1,否则置0.根据给出的集合得到的set为{1,1,1,0,1,0,1,1},然后再根据set集合的值输出对应的下标即可得到集合{3,5,7,8,2,1}的排序结果。这个就是位图排序的原理。一.位图排序的应用: 1.给40亿个不重复的un
阅读全文
posted @ 2013-03-28 22:03
摘要:1.归并排序#include <stdio.h>
#include <stdlib.h>
#include <time.h> #define N 50000 void merge(int [],int,int,int);//归并排序数组合并函数声明
void mergesort(int [],int,int);//归并排序数组排序函数声明 //主函数
int main()
{ int i,a1[N]; double t1,t2,t3,t4; for(i=0;i<N;i++) { a1[i]=rand()%N; }...
阅读全文
posted @ 2012-03-08 22:32
摘要:我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我们当然希望如果可以的话都是内排来完成。但对于大数据集来说,内存是远远不够的,这时候就涉及到外排序的知识了。 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装人内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。 一般来说外排序分为两个步...
阅读全文
posted @ 2011-11-14 23:18
摘要:转载请表明出处http://blog.csdn.net/yming0221/article/details/6967047双向冒泡算法比单向冒泡更适用于序列基本有序,但是有小元素在尾部,例如数列1,2,3,4,5,6,7,8,9,0如果使用单向冒泡算法,时间复杂度将是O(n^2)改进的双向冒泡时间复杂度是O(n)下面是双向冒泡算法的代码/**************************************************************************
* Problem: 双向冒泡算法
* Copyright 2011 by Yan
* DATE:
* E-M
阅读全文
posted @ 2011-11-13 23:10
摘要:http://poj.org/problem?id=3183Stump RemovalTime Limit:1000MSMemory Limit:65536KDescriptionAlways thinking of the cows' grazing experience, FJ has found that he must remove N (1 <= N <= 50,000) unsightly stumps from the pasture. The stumps are conveniently arranged in a straight line and nu
阅读全文
posted @ 2011-01-04 22:00
摘要:本题求将一个序列排序成有序序列所需要的最少交换次数,交换只能相邻交换可以知道,最少次数就等于原序列的逆序对数首先交换相邻的数,最多只能把逆序对数减一,而排序好的序列中逆序对数为0未排序好的序列中逆序对数不为0换句话说,至少需要交换“逆序对数”次才能把序列排序其次,只要序列不是有序的序列,就必然存在 i 使得 a[i]>a[i+1]这样,只要交换 i 和 i+1就能使逆序对数减一,换句话说,存在交换“逆序对数”次就能把序列排序的算法上界=下界,所以答案就是逆序对数...BrainmanTime Limit:1000MSMemory Limit:30000KDescriptionBackgr
阅读全文
posted @ 2010-12-17 21:43
浙公网安备 33010602011771号