用字符串冒泡排序

时间:2016-04-26 10:38:44

标签: c argv

我正在尝试制作一个能够实现' argv'并使用冒泡排序对其中的字符串进行排序。由于某种原因,冒泡排序不起作用,我无法找到问题。

void order(int howmany, char** strings)
{
    int i = 0;
    char* temp = (char*)malloc(sizeof(char)*20);

    for (i = 1; i < howmany-1; i++)
    {
        if (strcmp(strings[i], strings[i + 1]) > 0)
        {
            strcpy(temp, strings[i]);
            strcpy(strings[i], strings[i+1]);
            strcpy(strings[i + 1], temp);
        }
        else if (strcmp(strings[i], strings[i + 1]) < 0)
        {
            continue;
        }
        else
        {
            continue;
        }

    }

}

2 个答案:

答案 0 :(得分:3)

要对所有字符串进行排序,您需要多个循环。使用一个循环,您只需将第一个最小/最大的一个移动到适当的位置,然后算法停止。另外,为什么你从i = 1开始而不是0?就像你没有比较第一个字符串与其他字符串。 祝你好运

答案 1 :(得分:1)

这使用稍微优化的冒泡排序(在子序列过程中跳过不必要的比较)来自维基百科文章,翻译为C.因为我们正在排序非NULL char *的数组(按{{的结果排序) 1}}在引用的字符串上),它交换指针,而不是字符串内容。

strcmp