堆排序

来源:互联网 发布:js 隐藏a标签 编辑:程序博客网 时间:2024/05/17 23:29

// 14.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"

#include<iostream>
using namespace std;

void siftdown(int a[],int i,int n)//堆调整函数
{
 int j,t;t=a[i];

 while((j=2*i+1)<n)
 {
  if(j<n-1&&a[j]<a[j+1])j++;
  if(t<a[j]){a[i]=a[j];i=j;}
  else break;
 }
 a[i]=t;
}

void heap_sort(int a[],int n)//堆排序函数
{
 int i,t;

 for(i=(n-2)/2;i>=0;i--)siftdown(a,i,n);

 for(i=n-1;i>0;i--)
 {
  t=a[0];a[0]=a[i];a[i]=t;

  siftdown(a,0,i);
 }
}

int main()
{
 int i;
 int a[9]={46,26,22,68,48,42,36,84,66};//对该数组元素从大到小排序

 heap_sort(a,9);
 for(i=0;i<9;i++)cout<<a[i]<<' ';
 cout<<endl;

 return 0;
}

 

原创粉丝点击