QSort函数对不同类型数据快速排序浅谈

一、对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 - *(int *)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 Sample
{
double data;
int other;
}s[100]

//按照data的值从小到大将结构体排序

int cmp( const void *a ,const void *b)
{
return (*(Sample *)a).data > (*(Sample *)b).data ? 1 : -1;
}

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

五、对结构体二级排序

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

//按照x从小到大排序,当x相等时按照y从大到小排序

int cmp( const void *a , const void *b )
{
struct Sample *c = (Sample *)a;
struct Sample *d = (Sample *)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 Sample
{
int data;
char str[100];
}s[100];

//按照结构体中字符串str的字典顺序排序

int cmp ( const void *a , const void *b )
{
return strcmp( (*(Sample *)a).str , (*(Sample *)b).str );
}

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

附加一个完整点的代码,对字符串二维数组排序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char s[2001][1001];

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

int main(){
int i,n;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++) gets(s[i]);
qsort(s,n,1001*sizeof(char),cmp);
for(i=0;i<n;i++) puts(s[i]);
return 0;
}

时间: 2024-10-10 01:54:37

QSort函数对不同类型数据快速排序浅谈的相关文章

qsort函数排序各种类型的数据。

qsort函数是库函数中的一员,我们先来看看官方文档是怎么写的: 其中qsort的参数void* base是传入一个数组,size_t num 为数组整体大小,size_t size 为单个元素的大小,int (*compar)(const void*,const void*)是需要使用者去完成的一个比较函数 针对这个函数,在不同类型的数组中需要用不同的处理方式,来保证数组中的元素大小不会失真(例如在处理double型的数组时就需要用不同的方式来进行) 比较函数的返回值是; return val

php json_encode 函数造成浮点类型数据出现精度问题

在php 7.1.* 版本,在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题.在php 5.6.*上不会放生 $data = [ 'a' => '100', 'b' => 10, 'c' => 0.1 ]; echo json_encode($data); 输出: { "a":"100", "b":10, "c":0.10000000000000001} 建议:就是将 floa

Sql Server Convert函数转换Datetime类型数据

0 Feb 22 2006 4:26PM CONVERT(CHAR(19), CURRENT_TIMESTAMP, 0) 1 02/22/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 1) 2 06.02.22 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 2) 3 22/02/06 CONVERT(CHAR(8), CURRENT_TIMESTAMP, 3) 4 22.02.06 CONVERT(CHAR(8), CURRENT_TIM

天下数据:浅谈早会利与弊

基本上每个企业都会有很多大大小小的会议,很多会议基层员工很少参与,但惟独早会,是全员参与!然而也有很多企业并没有认识到,为什么要开早会,仅仅停留在形式上,甚至是很多人反感开早会,更甚者直接把早会取消了,省的麻烦,对于有些公司的行政部门来说,多一事不如少一事. IDC企业天下数据也保持着早会的传统,而且是每天都有.从最初的每个早会主持者都尽心尽力的去准备到现在的敷衍了事.可以说小天是一路上体验过来的.每天30分钟左右的早会对员工而言更多的成了一种工作上的消磨时间.可早会的初衷并非如此.所谓一年之计

《浅谈JavaScript系列》系列技术文章整理收藏

<浅谈JavaScript系列>系列技术文章整理收藏 1浅谈JavaScript中面向对象技术的模拟 2浅谈javascript函数劫持[转自xfocus]第1/3页 3浅谈javascript 面向对象编程 4老鱼 浅谈javascript面向对象编程 5浅谈javascript的数据类型检测 6浅谈Javascript嵌套函数及闭包 7根据一段代码浅谈Javascript闭包 8浅谈JavaScript编程语言的编码规范 9浅谈Javascript面向对象编程 10浅谈JavaScript

浅谈算法和数据结构系列汇总(转)

突然看到一个大神的系列文章讲的就是算法和数据结构,现在把它的文章集中分享给大家,向大神致敬: 浅谈算法和数据结构: 一 栈和队列 浅谈算法和数据结构: 二 基本排序算法 浅谈算法和数据结构: 三 合并排序 浅谈算法和数据结构: 四 快速排序 浅谈算法和数据结构: 五 优先级队列与堆排序 浅谈算法和数据结构: 六 符号表及其基本实现 浅谈算法和数据结构: 七 二叉查找树 浅谈算法和数据结构: 八 平衡查找树之2-3树 浅谈算法和数据结构: 九 平衡查找树之红黑树 浅谈算法和数据结构: 十 平衡查找

以对象function本身函数不同的创建 car 的类型数据来重复或许做更换(开发)

创建Car的数据类型程序 // function car () { } // 创建的共享方法 car . prototype. shift = function () { alert ( this . color +" 汽车 " ) : } 选择格式在C++ 代码中比较常见,格式可类似更新下面如: //创建car 类型 function car () { if (car . prototype shift ) { // if 语句内只可以执行一次 car . prototype.shi

泛型编程与C++标准模板库 : 浅谈sort()排序函数

以前用sort排序的时候,只知道sort函数有如下两种重载方式. template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp ); 当时对这些参数也不是很懂,只知道一些简单的用法. 1).比如: 如下代码可以使

qsort函数用法

原文链接http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html qsort 功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针 用于确定排序的顺序 排序方法有