#include <stddef.h>
#include <stdio.h>

int compareString(char *s1, char *s2)
{
    while (*s1 != '\0' && *s2 != '\0')
        if (*s1 == *s2)
        {
            s1++;
            s2++;
        }
        else
        {
            return *s1 - *s2;
        }
    return 0;
}

void sortString(char *s[], int n)
{
    int i, j;
    char *t;
    for (i = 0; i < n; i++)
    {
        for (j = i; j < n; j++)
            if (compareString(s[i], s[j]) > 0)
            {
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
    }
}

void traversal(char *a[], int n, const char *title)
{
    int i;
    printf("\n%s\n", title);
    for (i = 0; i < n; i++)
        printf("%s ", a[i]);
    printf("\n");

}

int main()
{
    char *a[] = {"Shanghai", "Henan", "Hubei", "Hebei",
                 "Liaoning", "Jiangsu", "Beijing", "Shandong", NULL};
    int i, j;
    int length = 8;
    traversal(a, length, "排序前:");
    sortString(a, length);
    traversal(a, length, "排序后:");
}


备份地址: 【字符串排序