网站建设资讯

NEWS

网站建设资讯

c语言堆排序主函数 c语言实现堆排序代码

C语言中的排序函数是什么

include cstdlib 或 #include stdlib.h

创新互联服务项目包括恭城网站建设、恭城网站制作、恭城网页制作以及恭城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,恭城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到恭城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))

参数表

*base: 待排序的元素(数组,下标0起)。

num: 元素的数量。

width: 每个元素的内存空间大小(以字节为单位)。可用sizeof()测得。

int(*)compare: 指向一个比较函数。*elem1 *elem2: 指向待比较的数据。

比较函数的返回值

返回值是int类型,确定elem1与elem2的相对位置。

elem1在elem2右侧返回正数,elem1在elem2左侧返回负数。

控制返回值可以确定升序/降序。

产生随机数的函数也是rand(),不是rank().

数据结构的堆排序

堆排序(C语言版)2010-03-15 23:24/*简述:

所谓堆排序,就是就是将所要排序的数以二叉树的形式存储。其中,有根的元素值大于其孩子结点。一直递归下去,每当取出最大的元素,考量其左右子树,以保持其根节点最大的性质不变。这个算法的时间复杂性是O(n log2 n)。证明略。 */

#includestdio.h

#define max_size 10//数组元素个数

#includestdlib.h

int heap_size;//当前堆中的元素数目

void MAX_HEAPFY(int A[], int i) {

int left, right, temp, largest;

left = 2*i;//

right = 2*i + 1;

if( left = heap_size A[i] A[left] )

largest = left;

else largest = i;

if( right = heap_size A[right] A[largest])

largest = right;

if(largest != i) {

temp = A[i];

A[i] = A[largest];

A[largest] = temp;

MAX_HEAPFY(A, largest);

}

}

void BUILD_MAX_HEAP(int A[]) {

//这个函数是用来产生最大堆的

int i;

heap_size = max_size-1;

for( i = (max_size-1)/2; i != 0; i--) {

MAX_HEAPFY(A, i);

printf("*****\n");

}

}

void HEAP_SORT(int A[]) {

int i, temp;

BUILD_MAX_HEAP(A);

for( i = (max_size-1); i != 1; i--) {

temp = A[1];

A[1] = A[i];

A[i] = temp;

--heap_size;

MAX_HEAPFY(A, 1);

}

}

int main()

{

int i;

int A[max_size];

for(i = 1; i != max_size; i++) {

A[i] = rand() % max_size;

printf("%5d", A[i]);

}

HEAP_SORT( A );

printf("\n\n");

for(i = 1; i != max_size; i++)

printf("%5d",A[i]);

system("PAUSE");

}

C语言编写一个排序函数(对一维数组排序)并在主函数中调用

for(j=i+1;jn;j++)

{

if(a[j+1]a[i])//a[j+1]改成a[j]

{

t=a[i];

a[i]=a[j+1];//a[j+1]改成a[j]

a[j+1]=t;//a[j+1]改成a[j]

}

}

c语言 编写一个排序函数,实现对主函数中数组的升序排序.

经典的两个排序:

(1)选择排序

#include stdio.h

main()

{

int a[5];

int i,j,k,t;

for (i=0;i5;i++)

scanf("%d",a[i]);

for (i=0;i4;i++)

{

k=i;

for(j=i+1;j5;j++)

if(a[k]a[j])

k=j;

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

for(i=0;i5;i++)

printf("%3d",a[i]);

}

(2)冒泡排序

#include stdio.h

main()

{

int a[5];

int i,j,t;

for (i=0;i5;i++)

scanf("%d",a[i]);

for (i=0;i4;i++)

for(j=0;j4-i;j++)

{

if(a[j]a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

for (i=0;i5;i++)

printf("%3d",a[i]);

}


文章名称:c语言堆排序主函数 c语言实现堆排序代码
文章网址:http://njwzjz.com/article/dopijss.html