void shift(int a[] , int i , int m)
{
int k , t
t = a[i]k = 2 * i + 1
while (k <m)
{
if ((k <m - 1) &&(a[k] <a[k+1])) k ++
if (t <a[k]) {a[i] = a[k]i = kk = 2 * i + 1}
else break
}
a[i] = t
}
void heap(int a[] , int n) //a 为排序数组,n为数组大小(编号0-n-1)
{
int i , k
for (i = n/2-1i >= 0i --) shift(a , i , n)
for (i = n-1i >= 1i --)
{
k = a[0]a[0] = a[i]a[i] = k
shift(a , 0 , i)
}
}
void main()
{
int a[10],i
for(i=0i<10i++)
scanf("%d",&a[i])
heap(a,10)
for(i=0i<10i++)
printf("%d",a[i])
}
#include <stdio.h>#include <stdlib.h>
#include <string.h>
int sort_function( const void *a, const void *b)
char list[5][4] = { "cat", "car", "cab", "cap", "can" }
int main(void)
{
int x
qsort((void *)list, 5, sizeof(list[0]), sort_function) // 调用快速排序
for (x = 0x <5x++)
printf("%s\n", list[x])
return 0
}
int sort_function( const void *a, const void *b)
return( strcmp((char *)a,(char *)b) )
}
// C++中自身有一个通用的快速 qsort,可以用它 ,自已要定义一个简单的比较函数就可