怎样用c语言中堆排序实现一个数组a[10]的排序

要原程序!
2025-02-27 08:29:32
推荐回答(3个)
回答1:

#include
#include
#include

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 = 0; x < 5; x++)
printf("%s\n", list[x]);
return 0;
}

int sort_function( const void *a, const void *b)
{ //自已要定义一个简单的比较函数就可
return( strcmp((char *)a,(char *)b) );
}

// C++中自身有一个通用的快速 qsort,可以用它 ,自已要定义一个简单的比较函数就可

回答2:

关于堆排序,伪代码如下
void heapsort(int* a, int n)
{
int result;
MAXHEAP H(A, n) //假设MAXHEAP的构造函数如此
for(int i = 0; i < n; i++)
H.removeMAX_ELEM(result); //每次抛出去堆中最大的数
}

回答3:

排列可用选择法
for(int i=0;i<10-1;i++)
for(int j=i+1;j<10;j++)
if(a[i]>a[j]) //从小到大排列
{int t=a[i];a[i]=a[j];a[j]=t;}

纯手打,不保证正确