0 0

堆排序运行没有结果,求解决~~万分感谢5

///筛选法调整堆的算法
///结点编号从0开始,为了和数组下标统一
void sift(int r[],int k,int m){///k:要筛选结点的编号,m:堆中最后一个结点的编号
    int i=k;///i指向被筛选的结点
    int j=2*i-1;///j指向结点i的左孩子
    int t;
    while(j<=m){
        if(j<m&&r[j]<r[j+1]){///比较i的左右孩子,j指向较大者
            j++;
        }
        if(r[i]>r[j]){///根结点已经大于左右孩子中的较大者
            break;
        }
        else{
            t=r[i];
            r[i]=r[j];
            r[j]=t;
            i=j;j=2*i-1;
        }
    }
}
void heapSort(int r[],int n){
    int t;
    for(int i=((n/2)-1);i>=0;i--){///初始建堆,从最后一个分支结点至根节点(根结点编号为0)
        sift(r,i,n-1);
    }
    for(int j=0;j<n-1;j++){///重复执行移走堆顶元素及重建堆的操作,共n-1次
        t=r[0];
        r[0]=r[n-j-1];
        r[n-j-1]=t;
        sift(r,0,n-j-1);///只需筛选根结点即可重新建堆
    }
}
2014年3月25日 18:20
目前还没有答案

相关推荐

    排序算法编程 堆排序 快速排序

    本主题将深入探讨四种常见的排序算法:堆排序、快速排序以及两种未在标题中明确提到但同样重要的排序方法——基数排序和计数排序。 首先,让我们详细了解一下堆排序。堆排序是一种基于比较的排序算法,利用了数据...

    C++实现堆排序

    1、 实现堆排序算法。 2、 理论分析并实验验证堆排序算法的时间复杂度。

    堆排序算法源代码

    堆排序是一种基于比较的排序算法,它通过构造一个大顶堆或小顶堆来实现排序。在本场景中,我们关注的是堆排序的源代码,它适用于openSUSE 11.4操作系统,并且是使用GCC version 4.5.1编译器编译的。在这个名为"sort...

    堆排序,插入排序和优先对排序的运行时间的比较

    本文将深入探讨三种常见的排序算法:堆排序、插入排序和优先队列排序(也称为堆排序的一种变体),并主要关注它们在大规模数据集上的运行时间性能。 首先,我们来看插入排序。插入排序是一种简单直观的排序算法,它...

    算法设计实验报告堆排序代码

    堆排序的主要任务是将无序的序列通过构建堆这一数据结构,然后逐步调整堆,使其满足最大堆或最小堆的特性,最终通过交换堆顶元素与最后一个元素并删除堆顶元素来完成排序。 二、算法设计 堆排序通常分为两个主要...

    数据结构中堆排序的中间结果

    输出堆排序中的中间结果,具体数据可以查看源程序,绝对可以运行,

    堆排序与直接插入排序算法的比较

    堆排序与直接插入排序算法的比较 堆排序和直接插入排序是两种常用的排序算法,分别...结果表明,堆排序的时间复杂度优于直接插入排序,但堆排序是不稳定的。因此,在实际应用中,需要根据具体情况选择合适的排序算法。

    冒泡排序~~~~~~~

    ~~~~~~~~~~~~冒泡排序代码~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    数据结构 堆排序 输出每一趟结果

    用函数实现堆排序,并输出每趟排序的结果 Input 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 Output 第一行:初始建堆后的结果 其后各行输出交换堆顶元素并调整堆的结果,数据...

    堆排序 里面有关于堆排序的练习台

    堆排序是一种基于比较的排序算法,它通过构建和调整二叉堆来实现数据的排序。在二叉堆中,每个父节点的值都大于或等于其子节点的值,这样的堆被称为最大堆。堆排序的基本步骤包括建堆、交换根节点与最后一个元素、...

    堆排序 减治法——C++代码

    堆排序是一种基于比较的排序算法,它利用了数据结构中的“堆”这一概念。在计算机科学中,堆通常被理解为一个完全二叉树,其中每个父节点的值都大于或等于(大顶堆)或小于或等于(小顶堆)其子节点的值。堆排序算法...

    ACM准备模板——堆排序模板

    在ACM(国际大学生程序设计竞赛)中,堆排序是一种常用且高效的排序算法,对于解决时间限制严格的在线问题尤其有用。本篇文章将深入探讨堆排序的原理、实现以及如何将其应用到ACM竞赛中。 首先,堆是一个近似完全...

    堆与堆排序.ppt

    堆排序的实现需要解决两个问题:如何由一个无序序列建成一个堆?如何在输出堆顶元素后,调整剩余元素为一个新的堆? 堆的调整:堆的调整是指在输出堆顶元素后,调整剩余元素为一个新的堆的过程。解决方法是:输出堆...

    堆排序算法实现堆排序

    总的来说,堆排序是一种实用的排序算法,尤其在没有额外存储空间限制的情况下,其时间复杂度的优势使其在许多实际应用中得到广泛应用。通过理解和掌握堆排序,我们可以更好地处理大规模数据的排序问题。

    基数排序、堆排序、希尔排序、直接插入排序

    这里我们将深入探讨四种常见的排序算法:基数排序、堆排序、希尔排序和直接插入排序。 首先,基数排序是一种非比较型整数排序算法,它的基本思想是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序...

    C++堆排序实现算法

    简单的堆排序算法:以定长数组为例,动态数组等可以以此类推

    堆排序算法详细配图讲解

    堆排序是一种基于比较的排序算法,它利用了完全二叉树的数据结构特性,通过堆的性质进行元素的排序。在堆排序中,堆被定义为满足以下性质的完全二叉树:对于每个非叶子节点,其值大于或等于(在大根堆中)或小于或...

    数据结构排序 堆排序

    数据结构排序 堆排序 堆排序是一种常用的排序算法,它使用大堆进行排序。下面是堆排序的详细知识点说明: 堆排序定义 堆排序是一种比较排序算法,它使用大堆(max heap)来对数组进行排序。堆排序的时间复杂度为O...

    堆排序 c++实现 可运行

    堆排序算法的c++实现,包括建堆,堆排序等。算法和复杂度参考《算法导论》。

    C++语言的算法实现包括插入排序冒泡排序堆排序快速排序

    本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...

Global site tag (gtag.js) - Google Analytics