CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求助qsort函数问题

楼主swordfly369(剑飞)2005-11-01 22:45:36 在 C/C++ / C语言 提问

对于两个数组l[4],m[4]怎么用qsort对l[4]排序,使m[4]的下标随着l[4]的下标改变  
  比如说l[4]   =   {2,4,3,1}  
  m[4]   =   {1,5,2,7}  
  要求最后结果为l[4]   =   {1,2,3,4}  
  m[4]   =   {7,1,2,5}    
  如果不用结构体做,该怎么做  
  cmp函数不会写 问题点数:100、回复次数:9Top

1 楼a109788522()回复于 2005-11-01 22:47:17 得分 0

上次考C++Top

2 楼a109788522()回复于 2005-11-01 22:48:34 得分 0

上次考C++的时候,也是了这个题目,不过以前没有看到这个函数,望高人指点Top

3 楼chunhai12(小海)回复于 2005-11-01 22:57:32 得分 0

MSDN上有例子  
   
  /*   QSORT.C:   This   program   reads   the   command-line  
    *   parameters   and   uses   qsort   to   sort   them.   It  
    *   then   displays   the   sorted   arguments.  
    */  
   
  #include   <stdlib.h>  
  #include   <string.h>  
  #include   <stdio.h>  
   
  int   compare(   const   void   *arg1,   const   void   *arg2   );  
   
  void   main(   int   argc,   char   **argv   )  
  {  
        int   i;  
        /*   Eliminate   argv[0]   from   sort:   */  
        argv++;  
        argc--;  
   
        /*   Sort   remaining   args   using   Quicksort   algorithm:   */  
        qsort(   (void   *)argv,   (size_t)argc,   sizeof(   char   *   ),   compare   );  
   
        /*   Output   sorted   list:   */  
        for(   i   =   0;   i   <   argc;   ++i   )  
              printf(   "%s   ",   argv[i]   );  
        printf(   "\n"   );  
  }  
   
  int   compare(   const   void   *arg1,   const   void   *arg2   )  
  {  
        /*   Compare   all   of   both   strings:   */  
        return   _stricmp(   *   (   char**   )   arg1,   *   (   char**   )   arg2   );  
  }  
  Top

4 楼mostideal(三甲)回复于 2005-11-01 23:12:36 得分 0

学习。。。Top

5 楼K()回复于 2005-11-02 00:31:22 得分 0

看看...Top

6 楼feitian124(从大二开始)回复于 2005-11-02 01:28:30 得分 0

不懂什么叫qsortTop

7 楼foochow(无聊,灌水......)回复于 2005-11-02 07:39:28 得分 0

只要注意下参数就可以了...Top

8 楼swordfly369(剑飞)回复于 2005-11-02 09:56:54 得分 0

就是这里的参数不懂啊,有哪位可以解释一下参数,这里为什么是void型的指针,如果其他类型的要怎么转换Top

9 楼skfox(sky)回复于 2005-11-02 10:08:00 得分 100

实现楼主功能的代码如下,比较函数按照类似strcmp函数的处理方式写就行了  
  #include   <stdlib.h>  
  #include   <stdio.h>  
  int   sort_function(   const   void   *a,   const   void   *b);    
  int   list[4][2]   =   {   {2,1},   {4,5},{3,2},   {1,7}};    
  int   main()  
  {  
          qsort((void   *)list,   4,   sizeof(list[0]),   sort_function);    
          for   (x   =   0;   x   <   4;   x++)    
          {  
                  for   (j   =   0;   j   <   2;   j++)    
                          printf("%d",   list[x][j]);                
                  printf("\n");  
          }  
          return   0;  
  }  
  int   sort_function(   const   void   *a,   const   void   *b)    
  {    
        int   *   aa   =   (int   *)   a;  
        int   *   bb   =   (int   *)   b;  
        if(*aa   >   *bb)  
              return   1;  
        if(*aa<*bb)  
              return   -1;  
        return   0;  
  }Top

相关问题

  • 标准库函数qsort()
  • 请问C的QSORT函数怎么用?
  • 请教qsort函数怎么用法
  • 请问qsort()函数的参数
  • 关于 qsort()函数的疑问?
  • 标准库函数qsort()的功能是什么
  • 还是qsort:参数里的函数怎么回事呀
  • 请大家帮忙详细介绍一下C++的sort函数&C的qsort函数!谢谢!
  • 函数
  • 函数

关键词

  • c++
  • 函数
  • qsort
  • sort
  • argv
  • argc
  • args
  • const
  • list
  • include

得分解答快速导航

  • 帖主:swordfly369
  • skfox

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo