字符串排序

Posted Ston.V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串排序相关的知识,希望对你有一定的参考价值。

人麻了,太菜了。

void str_exchange(char (*a)[MAX_FILEPATH_LEN],char (*b)[MAX_FILEPATH_LEN])
    char *tmp = (char *)malloc(MAX_FILEPATH_LEN*sizeof(char));
    memset(tmp,0,sizeof(tmp));
    strcpy(tmp,*a);
    strcpy(*a,*b);
    strcpy(*b,tmp);
    free(tmp);


void bubble_sort(char (*allFilePath)[MAX_FILEPATH_LEN],int dimension)
    int flag;
    for(int i=0;i<dimension;i++)
        flag = 0;
        for(int j=0;j<dimension-i-1;j++)
            if(strcmp(allFilePath[j],allFilePath[j+1])>0)
                str_exchange(&allFilePath[j],&allFilePath[j+1]);
                flag = 1;
            
        
        if(!flag)
            break;
    



char allFilePath[TOTAL_SWITCH_TURNS_NUM][MAX_FILEPATH_LEN] = "";
int main(void)
    
    //dump data to allFilePath...
    //ready to sort
    bubble_sort(allFilePath,10);
    return 0;

注意点:

1.首先应该明确,二维数组allFilePath的类型不是char** !!!,而是char (*)[ ],即数组指针类型,数组的每个指针指向字符数组,这在写bubble_sort的第一个形参时要注意。

2.既然allFilePath是指针,我们想要修改其指向的内容,就不需要实参传递allFilePath的指针,而是直接传递其本身即可。

3.同样是传参,在设计str_exchange是,我们传入的数组的指针,不是char **,所以需要写成char (*)[ ]的形式;(这里要理解指向数组的指针和指向数组首元素的指针,他们的类型是不同的,虽然存的值相同,我们交换的整个字符数组,而不改变某个字符,所以这里应该用字符数组的指针)

以上是关于字符串排序的主要内容,如果未能解决你的问题,请参考以下文章

SQL 字符串按大小排序

如何使用分布排序(基数排序等)对字符串进行排序?

字符串算法—字符串排序(下篇)

java 字符串 排序

Java中treeset怎么对字符串排序,对整形数值进行排序可以按照从小到大排序,若是对字符串排序该怎么排序

JSON如何进行字符串排序呢?