首页 > 其他 > 详细

排序算法--堆排序

时间:2014-02-15 01:10:08      阅读:344      评论:0      收藏:0      [点我收藏+]

#include<iostream>
#include<algorithm>

using namespace std;

void print(int *arr,int length)
{
 for(int i = 0;i < length;i++)
 {
  cout<<arr[i]<<"\t";
 }
 cout<<"\n";
}


void heapAdjust(int *arr,int i,int length)
{
 int lchild = 2 * i + 1;
 int rchild = 2 * (i + 1);
 int max = i;
 if(i <= length/2)
 {
  if(lchild <= length && arr[lchild] > arr[max])
   max = lchild;
  if(rchild <= length && arr[rchild] > arr[max])
   max = rchild;
  if(max != i)
  {
   swap(arr[max],arr[i]);
   heapAdjust(arr,max,length);
  } 
 }
}
void sort(int *arr,int length)
{
 for(int i = length/2 -1 ;i >= 0; i--)
 {
  heapAdjust(arr,i,length);
 }
 for(i = length-1;i > 0;i--)
 {
  swap(arr[0],arr[i]);
  heapAdjust(arr,0,i-1);
 } 
}

int main()
{
 int arr[] = {8,5,7,4,6,2,3,1,9};
 int size = sizeof(arr)/sizeof(int);
 cout<<"排序前数组元素为:"<<endl;
 print(arr,size);

 sort(arr,size);
 cout<<"排序后数组元素为:"<<endl;
 print(arr,size);
 return 0;
}

排序算法--堆排序

原文:http://www.cnblogs.com/WangYinlong/p/3549110.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!