`
java-mans
  • 浏览: 11710375 次
文章分类
社区版块
存档分类
最新评论

qsort()实现对字符数组的排序

 
阅读更多

一、首先来看一个程序

#include <cstdio>
int main()
{
	char *a[10]={"111","222"};
	printf("%s\n%s\n%s\n",a,*a,a[0]);
	printf("%d:\t%s\n",sizeof(a[0]),a[1]);
	printf("\n\n");
	char b[10][10]={"111","222"};
	printf("%s\n%s\n%s\n",b,*b,b[0]);//效果一样,不要问我为什么,我也不知道。
	printf("%d:\t%s\n",sizeof(b[1]),b[1]);
	return 0;
}

/*
sizeof(a)		等于a所指向对象的长度
char *a[n];		a[i]为字符串首地址,a为第一个字符串首地址的地址,sizeof(a[0])=4;
char a[n][m];	a[i]为字符数组,a为第一个字符串首地址,sizeof(a[0])=m;
*/


二、两个排序程序

#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
	char **pa=(char **)a;
	char **pb=(char **)b;
	return strcmp(*pa,*pb);
}
int main()
{
	char *a[3]={"222","111","333"};
	qsort(a,3,sizeof(a[0]),cmp);
	printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
	return 0;
}
/*
这里的a是指针的指针,所以在cmp中要首先转换成(char**)形式,然后使用*pa和*pb转换成指针(即:字符串首地址),strcmp(*pa,*pb)对字符串进行排序即可
*/


//////////////////////////////////////////
#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
	char *pa=(char *)a;
	char *pb=(char *)b;
	return strcmp(pa,pb);
}
int main()
{
	char a[3][10]={"222","111","333"};
	qsort(a,3,sizeof(a[0]),cmp);
	printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
	return 0;
}
/*
这里的a直接就是地址,所以在cmp中只需要转换成(char*)形式,这时pa和pb直接就是字符串首地址,所以直接使用strcmp(pa,pb)即可
更好的理解:将a看做一维数组,数组里面元素为字符串
*/

参考网址:http://c.chinaitlab.com/c/skill/200907/790644.html

分享到:
评论

相关推荐

    qsort排序的七种方法

    使用`qsort`对整型数组排序,比较函数`cmp`通过将void指针转换为int指针并进行减法操作来确定元素的相对顺序。 2. **对char类型数组排序**: 类似于int类型的排序,只是将void指针转换为char指针,适用于字符数组...

    二维的qsort,根据其中任何一维进行快速排序

    通过对上述代码的分析,我们可以看到,利用结构体和`qsort`函数可以方便地实现对多维数组的排序。这种方法不仅适用于二维数组,还可以扩展到更高维度的数据结构。此外,通过改变比较函数中的逻辑,可以灵活地实现...

    七种qsort排序方法c++代码 排序算法模板

    ### 二、字符数组排序 对于字符数组,也可以采用类似的比较函数来进行排序: ```cpp #include int cmp(const void *a, const void *b) { return *(char *)a - *(char *)b; } int main() { char word[100]; //...

    C库函数qsort七种使用方法示例

    一、对 int 类型数组排序 qsort 函数可以对 int 类型数组进行排序,下面是一个简单的示例代码: ```c int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a – *(int *)b; } qsort(num, ...

    qsort函数应用大全

    然后,使用 qsort 函数对字符数组进行排序: ```c char word[100]; qsort(word, 100, sizeof(word[0]), cmp); ``` 三、对浮点数数组的排序 对浮点数数组的排序需要注意,浮点数的比较需要特殊处理。cmp 函数的定义...

    qsort总结.pdf快速排序总结qsort总结.pdf快速排序总结

    // 对字符数组word进行排序 ``` ##### 3. 对double类型数组排序 浮点型数据排序需要注意数值的精度问题。 ```c double in[100] = { /* 初始化数组 */ }; int cmp(const void *a, const void *b) { return *...

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

    对字符数组排序与整型数组类似,只是比较函数中的类型转换变为`char`类型: ```c char word[100]; int cmp( const void *a , const void *b ) { return *(char *)a - *(char *)b; } qsort(word, 100, sizeof...

    qsort函数应用大全.doc

    一、对 int 类型数组排序 qsort 函数可以对 int 类型数组进行排序。例如,下面是一个对 int 类型数组的排序示例: ```c int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)...

    七种qsort排序方法

    类似于整型数组,字符数组的排序也可以通过`cmp`函数实现,这里需要注意的是比较的类型应与数组元素匹配,即`char`类型。 3. **对双精度浮点型(double)数组排序** 在处理浮点数时,由于可能存在浮点误差,`cmp`...

    七种qsort排序

    对int类型数组排序 `qsort()`函数可以用于对整型数组进行排序。在比较函数`cmp`中,通过类型转换将传入的`void*`指针转换为`int*`,然后比较两个指针指向的数值大小。具体实现如下: ```c int cmp(const void *a, ...

    qsort函数具体介绍

    * 对字符数组排序 * 对双精度浮点数数组排序 * 对结构体数组排序 * 对字符串数组排序 * 在计算几何中求凸包 下面是 qsort 函数的一些实际应用示例: 1. 对整数数组排序 ```c int num[100]; int cmp(const void *a...

    symbian 数组排序

    本篇将深入探讨Symbian中数组排序的相关知识点,以及如何在不同编码格式下实现排序。 首先,Symbian操作系统主要使用C++语言进行开发,因此我们讨论的数组排序主要基于C++的原生数组和STL(Standard Template ...

    通讯录排序代码整理与源码

    使用qsort函数来对结构体数组进行快速排序,提高效率和简化代码。 使用atoi函数来将字符串形式的生日转换为整数形式,便于比较和计算年龄。 使用结构体数组来存储通讯录的信息,方便进行排序和输出。 使用qsort函数...

    qsort使用法和具体举例说明

    2. 对字符数组排序 char word[100]; int cmp ( const void *a , const void *b ){ return *(char *)a - *(char *)b; } qsort(word,100,sizeof(word[0]),cmp); 3. 对浮点数数组排序 double in[100]; int cmp( ...

    java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)

    在Java编程中,数组排序是常见的操作,有多种算法可供选择。本文主要介绍四种常见的排序算法:冒泡排序、快速排序、希尔排序和选择排序。这些算法各有特点,适用于不同的场景。 1. **冒泡排序**: 冒泡排序是一种...

    C++Effective的代码,qsort的使用,字符转化的过程,内核泄漏检测.zip

    C++提供了多种方式进行字符转换,例如`std::cin.getline()`、`std::getline()`、`std::istringstream`和字符数组的`strcpy`、`strcat`等函数。理解这些函数的工作原理和使用场景至关重要,它们可以帮助我们有效地...

    七种qsort排序方法~~~

    - `cmp`函数可以用来比较字符数组中的元素,通常用于排序字符串或字符数组。 ### 3. 排序浮点型数组 #### 示例代码: ```c #include int cmp(const void *a, const void *b) { return *(double *)a &gt; *(double ...

Global site tag (gtag.js) - Google Analytics