| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:库函数qsort
只看楼主 加入收藏
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
结帖率:96.08%
收藏
已结贴  问题点数:20 回复次数:5 
库函数qsort
有谁能给个代码

演示一下这个函数的常用用法么?

如果顺便说下注意事项什么的那就更好啦

2013-06-23 00:55
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
http://baike.baidu.com/view/982231.htm


[fly]存在即是合理[/fly]
2013-06-23 01:31
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
百科我已经看过了

可是还是不明白,

怎么用这个函数对一个字符串数组排序?

也就是说是一个“二维”的字符数组。。。。

目测百科上的解释只是对一维的数组排序唉。。



学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-23 08:22
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
/*
(3*) 用指向指针的指针实现对已有的8 个字符串进行排序,并输出排序后的结果。
测试输入数据:January, February, March, April, May, June, July, September
预期输出:May July June April March January Februrary September
实现要求:
①排序的规则为:先比较两个字符串的长度,长度短的字符串排在前面,如果长度相等,
则比较字符串的值,按从小到大排序输出。
②用字符串数组存放各字符串,并在定义数组时对其进行初始化。
③利用库函数qsort实现排序操作。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int coutLength(char *a,char *b);
    int comp(const void *a,const void *b);

    int i,j;

    char *x[20]/*[][20]*/={"January","February","March","April","May","June","July","September"};
   
    char temp[20]="sdfiu";
    strcpy(*(x+1),temp);
    printf("%s",x[1]);
    for(i=0;i<7;i++)
    {
        for(j=i+1;j<8;j++)
        {
            if(coutLength(x[i],x[j])==1)
            {
                strcpy(temp,x[i]);
                strcpy(x[i],x[j]);
                strcpy(x[j],temp);
            }
            else
            {
                qsort((void *)x,2,sizeof(x[0]),comp);
            }

        }
    }

   
   

    for(i=0;i<7;i++)
    {
        printf("%s ",x[i]);
    }

    return 0;
}


//比较字符串长度,如果等长返回0,前者长返回1,后者长返回-1.
int coutLength(char *a,char *b)
{
    int i;
    int lengthOfa=0,lenghtOfb=0;
    for(i=0;*(a+i)!='\0';i++)
    {
        lengthOfa++;
    }
    for(i=0;*(b+i)!='\0';i++)
    {
        lenghtOfb++;
    }
    if(lengthOfa==lenghtOfb)
    {
        return 0;
    }
    else if(lengthOfa>lenghtOfb)
    {
        return 1;
    }
    else
    {
        return -1;
    }

}

int comp(const void *a,const void *b)
{
    return (strcmp(*(char **)a,*(char **)b));
}

是这样一道题,我不知道该怎么用那个库函数了

上面的代码是错的,

但是大体体现了我的思想。。



学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-23 08:42
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void* a, const void* b)
{
    return strcmp((char *)a, (char *)b);
}

int main()
{
    char x[][20] = {"January", "February", "March", "April", "May", "June", "July", "September"};
    qsort(x, 8, 20, cmp);

    return 0;
}


[fly]存在即是合理[/fly]
2013-06-23 15:34
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
谢谢版主~


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-24 13:50
快速回复:库函数qsort
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015237 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved