使用第一个元素对数组进行排序

时间:2015-12-19 11:14:41

标签: c arrays sorting

假设我有一个指针指针char数组,如下所示:

2-abc 
5.5-aaa 
10-acdc    
3-(the text here doesn't matter)

我需要按照每个字符串中的数字按升序对数组进行排序。我知道这个数字以"-"结尾。数字也可以有小数点,并且在<0;INT_MAX>范围内。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

qsort与使用strtod的比较函数一起使用,将字符串的初始部分转换为double值。请注意返回整数<0==0>0,具体取决于转换后的值是a<ba==b还是a>b

您需要在此作业中加入一些工作,但它应该适合单页代码。

假设数组是一个指向字符串的指针数组,这里有一个比较函数:

#include <stdlib.h>

int mycmp(const void *a, const void *b) {
    double aa = strtod(*(const char **)a, NULL);
    double bb = strtod(*(const char **)b, NULL);
    return (bb < aa) - (aa < bb);
}