码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
数据结构实践——大数据集上排序算法性能的体验
本文是针对[数据结构基础系列(9):排序]的实践项目。【项目 - 大数据集上排序算法性能的体验】 设计一个函数,产生一个至少5万条记录的数据集合。在同一数据集上,用直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序等算法进行排序,记录所需要的时间,经过对比,得到对复杂度不同的各种算法在运行时间方面的感性认识。 提示1:这一项目需要整合多种排序算法,可以考虑先建设排序算法...
分类:编程语言   时间:2015-12-01 12:55:39    阅读次数:207
堆排序
思想:1.构建最大堆2.把根节点和最后一个节点交换,,把堆长度-1,也就不考虑放最后的最大的元素了,再构建最大堆3.现在第二大的元素在根节点了,我们再重复步骤2,直到堆长度为1int MaxHeap(int DataArray[],int Father,int DataLen){ int Le...
分类:编程语言   时间:2015-11-29 15:01:16    阅读次数:155
算法—堆排序
我们可以把任意优先队列变成一种排序方法。将所有元素插入一个查找最小元素的优先队列,然后再重复调用删除最小元素的操作来将它们按顺序删去。用无序数组实现的优先队列这么做相当于进行一次插入排序。用基于堆的优先队列这样做等同于哪种排序?一种全新的排序方法!下面我们就用堆来实现一种经典而优雅的排序算法——堆排...
分类:编程语言   时间:2015-11-23 13:32:34    阅读次数:167
堆排序算法详解
1、堆排序概述堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排...
分类:编程语言   时间:2015-11-19 10:46:50    阅读次数:207
大顶堆第二弹----堆排序(递归实现)
1 package tooffer; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 6 public class BigHeap { 7 8 9 10 /* 11...
分类:编程语言   时间:2015-11-17 16:34:03    阅读次数:222
【算法】堆排序
堆排序 上一篇博客讲了堆这种数据结构,它提供了一种接口getMax接口,好消息是获得最大值的时间复杂度仅仅为O(lgn),因此联想到之前的选择排序算法, 每次从剩下的未排序元素中找到极值元素,将其放入对应的位置。 由于一般的选择排序在寻找最大值时需要遍历数组,遍历数组的复杂度为O(n),因此造成了时间的浪费,如若将待排序的数组进行一系列整理, 例如将其整理成有特点的堆这种数据结构。那么我们...
分类:编程语言   时间:2015-11-12 13:45:21    阅读次数:264
堆排序
对于堆排序,最重要的两个操作就是构造初始堆和调整堆;当然堆排序分为大顶堆和小顶堆,它是根据排序中根节点大小来描述的。构造初始堆:从最后一个非叶节点开始,使Key[i]>=Key[2i+1]&&key>=key[2i+2]void heap_sort_init(int *pArr, int len){...
分类:编程语言   时间:2015-11-08 15:09:36    阅读次数:243
数据结构算法总结
分类 :(一)插入类排序:直接插入排序,折半插入排序,希尔排序(二)交换类排序:冒泡排序,快速排序(三)选择类排序:简单选择排序,树形选择排序,堆排序(四)归并排序:归并排序(五)分配类排序二、插入类排序:(一)思想:在一个已经排好序的序列中,将未被排进的元素按照原先的规定插入到指定位置。(二)分类...
分类:编程语言   时间:2015-11-07 12:15:40    阅读次数:395
排序之快速排序(上)
前言 本篇博客是在伍迷兄的博客基础上进行的,其博客地址。 希尔排序相当于直接插入排序的优化,它们同属于插入排序类,堆排序相当于简单选择排序的优化,它们同属于选择排序类。而快速排序其实就是冒泡排序的升级,它们都属于交换排序类。即它也是通过不断的比较和移动交换来实现排序的,只不过它的实现,增大了记录.....
分类:编程语言   时间:2015-11-06 22:08:29    阅读次数:388
堆排序
#include using namespace std;void CreatHeap(int a[],int n,int h){ int i,j,flag; int temp; i = h; j = 2*i + 1; temp = a[i]; flag = 0;...
分类:编程语言   时间:2015-11-04 13:05:41    阅读次数:255
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!