在C中对字符数组进行alpha排序的最简单方法是什么?

时间:2008-09-23 18:01:57

标签: c arrays sorting character

我正在寻找一种简单易懂的算法,以按字母顺序对C中的字符数组进行排序。

7 个答案:

答案 0 :(得分:5)

C中的

字符具有恰好符合的数值,因此您只需将字符视为整数即可。 C标准库包含'qsort'功能。在类似linux的系统上使用它(man qsort)。您可能需要将大写字母转换为小写以简化操作,但这很简单。如果您想了解快速排序算法(这是您应该学习的算法,因为您实际上会使用它),请参阅Wikipedia

答案 1 :(得分:2)

使用qsort方法:

#include <stdlib.h>

int char_compare (const void * a, const void * b)
{
  return *(const char *)a - *(const char *)b;
}

int main(){
  const char char_array[] = { 'c', 'a', 'b' };

  qsort (char_array, 3, sizeof(char), char_compare);

  return 0;
}

答案 2 :(得分:2)

如果结果是针对人类的,最好使用strcoll。它比strcmp或strcasecmp慢,但它占非英文字符。如果您打算使用它,请不要忘记为LC_COLLATE设置您的语言环境,即

setlocale(LC_COLLATE,“”);

答案 3 :(得分:1)

试试Bubble Sort这是最简单的排序算法。

答案 4 :(得分:1)

我想知道您是在寻找算法还是只是解决问题的方法?如果是后者,则使用C's qsort

如果您需要算法,请转到Insertion sortSelection sort,因为它们很容易理解。

答案 5 :(得分:0)

容易吗?冒泡泡。

这是java和int而不是char,但你可以很容易地适应它......

int[] bubble(int a[])
    {
    for (int i = a.length; --i>=0; )
        {
        for (int j = 0; j<i; j++)
            {
            if (a[j] > a[j+1])
                {
                int T = a[j];
                a[j] = a[j+1];
                a[j+1] = T;
                }
            }
        }
    return(a);
    }

答案 6 :(得分:0)