自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 快速排序过程的优化(续)

(1)在对数组元素进行排序前,选择一种随机化算法堆数组的元素进行随机化处理。尽量选择能够在线性时间复杂度上对数组进行随机化的方法。这样就可以在虽大程度上避免排序算法的性能出现最差的情况。(2)选择枢轴元素的时候采用随机的方法。(3)选择枢轴的时候采用首、尾、中三数取中的方法。(4)当需要排序的序列大小降低到一定程度的时候,使用其他简单排序的算法,以避免不断的递归创建爱女函数栈等开销。

2014-05-31 19:10:57 994

转载 更改Linux默认栈空间的大小

有时候写程序下1、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M2、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M3、可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空间大小4、在/etc/security/lim

2014-05-30 18:21:31 7677

原创 为什么快速排序比堆排序要快?

今天作算法排序实验,发现相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性增长,堆排序则要大很多。究其原因,应该有以下几个方面:        在堆排序(小根堆)的时候,每次总是将最小的元素移除,然后将最后的元素放到堆顶,再让其自我调整。这样一来,有很多比较将是被浪费的,因为被拿到堆顶的那个元素几

2014-05-30 17:59:16 6016 2

原创 2014-5-30任务完成情况

(1)实现qsort;          万(2)不断从细节上优化qsort;  (3)对比qsort与堆排序的时间差,并分析原因;         相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性增长,堆排序则要大很多。究其原因,应该有以下几个方面:        在堆排序

2014-05-30 17:54:42 661

原创 调整法建堆过程的优化

#include #include #include #include #include using namespace std;#define MAX 10000000void readNum(int a[]){ string filename; ifstream infile("data_1000w.txt", ios::in); string textline =

2014-05-30 17:42:37 1102

原创 数据规模对数组的读取效率的影响——顺序读取和随机读取

这篇文章要说明的是虽然数组可以做到随机读取,一般情况下

2014-05-30 17:32:51 2313

原创 快速排序过程的优化

快速排序的优化

2014-05-30 15:23:27 835

转载 Linux中如何产生core?

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。 1.core文件的生成开关和大小限制 (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。 (2)使用ulimit -c filesize命

2014-05-29 22:11:38 1464

原创 2014-5-29任务完成情况

(1)硬盘安装linux系统;        完成。 (2)生成core文件;        完成,并整理文档 (3)初步学会gdb调试core;     完成,还不太熟练。可以根据core文件找到错误位置。 (4)将整理法建堆改成c++版,并用千万级的数据测试时间;        完成,发现一个问题,1000w的数据量在分配内存时就会core dump,后来发现100

2014-05-29 20:19:37 613

原创 2014-5-28任务完成情况

(1)想办法生成core文件;(2)初步学会gdb调试core;(3)算法时间复杂度分析:为什么增量方法比整理方法建堆速度慢?            调整法建堆的时间复杂度:循环是从i = headsize/2 -> 1。于是,有1/4的元素向下执行一次调整过程,有1/8的向下执行了两次,1/16的,向下执行了3次,......,1/2^k+1的向下比较了k次,其中

2014-05-28 19:39:24 634

原创 用调整法和插入法建堆的Python实现,不同建堆方式对堆排序性能的影响

插入法建堆是将数组1中的元素逐个插入到数组2中建立一个堆。每插入一个关键字就与其父节点的关键字比较大小,如果父节点的关键字较小则交换,然后依次自低地向上调整使之符合大(小)顶堆的特性。插入法建堆与调整法建堆可能结果不一样。调整法建堆是自底向上依次调整,一棵子树中最大的节点值与根节点交换,最小的那个节点位置在本次调整中不作改变。而插入法建堆结果与插入的顺序和值大小有关。以大顶堆为例,

2014-05-26 21:55:38 1662

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除