c语言堆排序代码

Python019

c语言堆排序代码,第1张

#include<stdio.h>

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,可以用它 ,自已要定义一个简单的比较函数就可