The array that is after sort -5 1 2 3 6 7 9 12 16 30
注意:
1、关于用户提供的比较函数:
qsort函数需要用户提供一个比较搜索函数。该函数由qsort函数调用,并向该比较搜索函数传递两个指针参数a和b。用户定义的比较函数必须在ab时返回1。这里的大于、小于、等于,完全由用户来定义。本例程中定义的大于、小于、等于就是数学上的大于、小于、等于。
2、快速排序简介:
快速排序是一种经典的高效排序算法。它是取待排序列中某个元素为基准,按照该元素值的大小将整个序列划分为左右两个子序列,其中左子序列的值小于或等于基准元素的值;右子序列的值大于或等于基准元素的值。然后分别对两个子序列重复上述排序过程,直至所有元素都排在相应位置为止。
有关快速排序算法的详细介绍,请参看数据结构、算法分析等书目。
10. realloc:重新分配主存函数
函数原型:void *realloc(void *ptr, unsigned newsize) 头文件:#include
函数功能:重新分配内存空间。第一个参数ptr为一个指针,它指向重新设定大小的块;第二个参数newsize为重新分配内存的字节大小。
返回值:分配成功,则返回修改块的指针,否则返回NULL。 例程如下: 利用函数realloc重新分配内存空间
#include
int *sqlist,i,len; len=10;
sqlist=(int *)malloc(len*sizeof(int)); for(i=0;i<20;i++) {
if(i>=len){
len=len*2;
sqlist=realloc(sqlist,len*sizeof(int)); }
sqlist[i]=i; }
for(i=0;i<20;i++) printf(\}
例程说明:
(1)本例程首先分配一个只有10个整型数据大小的内存空间。
(2)然后通过程序向该数组输入20个整数。在这里要加一个判断,即当输入的数据超过原来分配的内存空间的长度时,调用realloc函数将内存重新分配,大小为上一次长度的2
倍。这样第i次调用realloc函数时分配的内存长度为10*2i个整型变量长度。
(3)最后打印这20个整数。 本例程的运行结果为:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
注意:
1、realloc函数的作用实际上分为两步,一是在内存中重新开辟指定大小空间;二是将原内存空间的数据复制到新开辟的空间中(这是在新分配的内存比原内存大的情况下)。
2、如果新分配的内存比原内存小,则新分配的内存单元不被初始化。 3、realloc函数多用于动态顺序表这种数据结构的建立。

