码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序C++

时间:2016-06-19 16:53:34      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

以后,我要把自己平时写的常用的放在这里。如有改进,请大家指出。

#include "stdafx.h"
#include <iostream>
using namespace std;
int *p;
int length;//保存需要排序的元素个数
void Init() {  //初始化。
    cout << "输入需要排序的元素个数" << endl;
    cin >> length;
    p = new int[length];
    cout << "依次输入需要排序的元素" << endl;
    for (int i = 0; i < length; i++) {
        cin >> p[i];
    }
}
void Show() { //依次输出数组元素。
    for (int i = 0; i < length; i++) {
        cout << p[i] <<"    "<< endl;
    }
}
void shift( int i,int length)
{
    int temp = p[i];
    int j = 2 * i + 1;
    while (j<length)
    {
        if (j<length - 1 && p[j]<p[j + 1])
            j++;
        if (temp<p[j])
        {
            p[i] = p[j];
            i = j;
            j = 2 * i + 1;
        }
        else
            break;
    }
    p[i] = temp;
}
void HeapSort()
{
    int i, temp;
    for (i = length / 2 - 1; i >= 0; i--)
        shift(i,length);
    for (i = length - 1; i>0; i--)
    {
        temp = p[i];
        p[i] = p[0];
        p[0] = temp;
        shift(0,i);
    }

}
int main()
{
    Init();
    HeapSort();
    cout << "*******************************" << endl;
    Show();
    getchar();
    return 0;
}

运行环境VS2015.

堆排序C++

标签:

原文地址:http://www.cnblogs.com/520wy/p/5598230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!