您的位置:首页 > 其它

额,堆排序

2014-08-22 15:58 99 查看
不想解释原理了,就是创建堆,交

#include "stdio.h"
#include "stdlib.h"
#define  N 10
void AdjustHeap(int a[],int i,int num)
{
int temp= a[i];
int j=0;
for (j =2*i; j <=num; j=j*2)
{
if (j<num&&a[j]<a[j+1])
{
j++;
}
if (a[j]<=temp)
{
break;
}
a[i]=a[j];
i=j;
}
a[i]=temp;
}
void swap(int a[],int i,int num)
{
int temp=a[i];
a[i]=a[num];
a[num]=temp;
}
void HeapSort(int a[],int num)
{
for (int i = (num)/2; i >0; --i)
{
AdjustHeap(a,i,num);
}
int b=1;
//排序
for (int i = num; i > 1; i--)
{
swap(a,1,i);
AdjustHeap(a,1,i-1);
}
}

int main(int argc, char const *argv[])
{
int a
={0,2,3,1,9,8,6,7,4,5};
HeapSort(a,N-1);
for (int i = 1; i < N; ++i)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}


换,调整堆,这么一个过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: