堆排序
#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");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步