荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: kaman (天外飞仙), 信区: ACMICPC
标  题: qsort用法简介
发信站: 荔园晨风BBS站 (Thu Apr 22 20:49:04 2004), 站内信件

利用库函数qsort实现排序操作。库函数qsort在头文件stdlib.h中定义,其函
数原型为:

void qsort(void*base,//所要排序的数 组第一个元素的地址

     size-t nelem,//要排序的元素的个数

     size-t width,//要排序的元素的宽度

     int(*fcmp)(const void*,const void*));//用于比较元素大小的函数名字

其中,比较数组元素大小的函数原型为:

 int(*fcmp)(const void*,const void*));

其两个参数分别指向两个要比较的数,结果用小于零、等于零和大于零分别表示第
一个数小于、等于和大于第二个数。你需要定义自己的字符串比较函数,其原型和
上面的一样。函数的定义如下:

      int sort-function(const void*a ,const void*b)

     {

        if (strlen((chat*)a)!=strlen((chat*)b))

            return strlen((char*)a)-strlen((char*)b);

        return(srtcmp((char*)a,(char*)b));

     }
例:
#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 = 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) );
}



--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·*[[From:210.39.3.50]hhhhhhhhhhhhhhhhhhhh

※ 修改:·kaman 於 May 12 16:22:47 修改本文·[FROM: 192.168.111.200]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.200]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店