堆排序

#include <stdio.h>
#include <stdlib.h>

void swap(int a[], int n, int i)
{
int temp;
temp = a[n] ;
a[n] = a[i] ;
a[i] = temp;
}

void HeapAdjust(int L[], int s, int m)
{

int temp,j;
temp = L[s];

for( j = 2*s; j<m; j*=2)
{
if(j < m && L[j] < L[j+1])
++j;
if(temp > L[j])
break;
L[s] = L[j];
s = j;
}
L[s] = temp;
}


void HeapSort(int L[], int length)
{
int i;
for( i = length/2; i >0; i--)
HeapAdjust(L, i, length);
for(i=1;i<=6;i++)
printf("%d",L[i]);

printf("\n");

for( i = length; i >1; i--)
{
swap(L,1,i);
HeapAdjust(L,1,i-1);
}
}


int main()
{
int i;
int a[7]={0,3,5,8,9,1,2};//不考虑a[0]
HeapSort(a,6);
for(i=1;i<=6;i++)
printf("%d",a[i]);
printf("\n");
}

转载于:https://www.cnblogs.com/fll369/archive/2012/08/12/2635397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值