鱼C论坛

 找回密码
 立即注册
查看: 2321|回复: 0

[技术交流] 数据结构与算法--堆排序问题

[复制链接]
发表于 2015-3-28 17:08:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zlQhs 于 2015-3-28 18:11 编辑

有一个值有问题

代码如下:
#include "stdafx.h"
#include <iostream>

#define DATA_SIZE 14
int iCompareCount = 0;

void swap(int data[], int i, int j)
{
        int iTemp = data[i];
        data[i] = data[j];
        data[j] = iTemp;
}

void heapAdjust(int data[], int s, int iDataSize)
{
        int iTemp = data[s];

        for ( int i = 2 * s; i <= iDataSize; i *= 2)
        {
                iCompareCount++;
                if ( i < iDataSize && data[i] < data[i + 1] )
                {
                        i++;
                }

                if ( iTemp >= data[i] )
                {
                        break;
                }

                data[s] = data[i];
                s = i;
        }

        data[s] = iTemp;
}

void heapSort(int data[], int iDataSize)
{
        int i = 0;
        for ( i = iDataSize / 2; i > 0; i-- )
        {
                heapAdjust(data, i, iDataSize);
        }

        for ( i = iDataSize; i > 1; i-- )
        {
                swap(data, 1, i);
                heapAdjust(data, 1, i - 1);
        }
}

void printResult(int data[], int iDataSize)
{
        printf("排序后的结果是:");
        for ( int i = 0; i < iDataSize; i++)
        {
                printf("%d ", data[i]);
        }
        printf("\n\n");
}

int _tmain(int argc, _TCHAR* argv[])
{
        int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18};
        heapSort(data, DATA_SIZE);
        printResult(data, DATA_SIZE);

        getchar();
        return 0;
}
运行结果:
QQ截图20150328142511.png


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-7 19:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表