C语言中qsort函数的应用

qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序

一、对int类型数组排序 

int num[100]; 

int cmp ( const void *a , const void *b )
{
    return *(int *)a  - *(int *)b;
}
qsort(num,100,sizeof(num[0]),cmp); 

二、对char类型数组排序(同int类型) 

char word[100];
int cmp( const void *a , const void *b )
{
    return *(char *)a - *(char *)b;
} 

qsort(word,100,sizeof(word[0]),cmp); 

三、对double类型数组排序(特别要注意) 

double in[100]; 

int cmp( const void *a , const void *b )
{
    return *(double *)a > *(double *)b ? 1 : -1;
}
qsort(in,100,sizeof(in[0]),cmp); 

四、对结构体一级排序 

struct In
{
    double data;
     int other;
}s[100];

int cmp( const void *a ,const void *b)
{
    return (*(struct In *)a)->data > (*(struct In *)b)->data ? 1 : -1;
}
qsort(s,100,sizeof(s[0]),cmp); 

 五、对结构体二级排序 

struct In
{
   int x;
   int y;
}s[100]; 

//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
    struct In *c = (struct In *)a;
    struct In *d = (struct In *)b;
    if(c->x != d->x) return c->x - d->x;
    else return d->y - c->y;
}
qsort(s,100,sizeof(s[0]),cmp); 

 六、对字符串进行排序 

struct In
{
    int data;
    char str[100];
}s[100]; 

//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
    return strcmp( (*(struct In *)a)->str , (*(struct In *)b)->str );
}
qsort(s,100,sizeof(s[0]),cmp); 
时间: 2024-09-21 10:35:15

C语言中qsort函数的应用的相关文章

C语言中qsort函数用法实例小结_C 语言

本文实例汇总了C语言中qsort函数的常见用法,非常具有实用价值.分享给大家供大家参考.具体分析如下: C语言中的qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序. 一.对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二.对char类型数

c语言中setcolor函数的如何使用改变指定字体的颜色?

问题描述 c语言中setcolor函数的如何使用改变指定字体的颜色? 好比输出hello world只让world变成红色,而其他的字体不换颜色,也就是只改变指定字体的颜色.能认为的控制. 解决方案 setcolor不是标准c里的函数.graphics.h是turboc专有的.用graphics.h必须用turboc 解决方案二: setcolor不是标准c里的函数.graphics.h是turboc专有的.用graphics.h必须用turboc 解决方案三: vc中: #include <w

c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢。

问题描述 c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢. 好比输出hello world只让world变成红色,而其他的字体不换颜色,也就是只改变指定字体的颜色.能认为的控制. 解决方案 1.可以不用setcolor函数来实现: printf(""hello %sworld%sn""33[0;40;31m""33[0m""); 解决方案二: 我在linux上测试了可以啊,你在什么平台上测试的.

循环问题-C语言中if函数中的问题

问题描述 C语言中if函数中的问题 #includeint main(){ int num[2][6]={{000000}{000000}}; int i=0j=0mnpz; printf(""Please type 1 for first classPlease type 2 for economy ""); { for(p=1;p<=10;p++) { scanf(""%d""&z); if(z==1&

关于c语言中strlen函数使用

问题描述 关于c语言中strlen函数使用 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ #include struct btbucode//定义结构体btbucode { int n; char pn[50]; }; struct btbucode code[]={{11, "cailiao"},{12, "caiji"},{13, "shang"},{14, "jingji&quo

c语言-C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题

问题描述 C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题 利用fread fwrite 读写网络存储上的文件时,是否会出现阻塞问题? 我的感觉是会出现但是无法通过select判断,因为select判断的是内容是否存在,就是文件是否存在,而对于文件fread fwrite没有发现文件也会报错 但是一旦文件存在开始读写以后发生了网络传输中断引起阻塞 那么还是会挂住 而所谓的非阻塞机制无法发挥作用 不知道我的理解是否正确? 谢谢大家发表看法. 解决方案 阻塞和非

c语言-C语言中Free函数释放内存为何释放不了!!!!!!!

问题描述 C语言中Free函数释放内存为何释放不了!!!!!!! #include #include void testFree(char *par) { void*free(par); par = NULL; } int _tmain(int argc, _TCHAR* argv[]) { char path[10] = {"abc"}; char *str = (char *) malloc(100 *sizeof(char)); memset(str,0x00,100 *size

关于c语言中malloc函数的问题

问题描述 关于c语言中malloc函数的问题 c语言中,在子函数中用malloc函数开辟的空间在主函数中还有效吗? 解决方案 原型:? void *malloc(unsigned int size); #include或#include malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存. malloc 向系统申请分配指定size个字节的内存空间(连续的一块内存).返回类型是 void* 类.

简述C语言中system()函数与vfork()函数的使用方法_C 语言

C语言system()函数:执行shell命令头文件: #include <stdlib.h> 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1.如果 sy