繁体   English   中英

为什么我的气泡排序在C中不起作用

[英]Why does my bubble sort not work in C

我是该站点的新手,并且正在自我学习如何用C编程。下面的代码在没有警告或错误的情况下编译并执行,但是第二次打印运行与第一次完全相同,即我的气泡排序例程不起作用。 使用仅单个字母字符的类似版本也可以。 任何指针(哎呀...)将不胜感激我要去哪里-谢谢!

编码:

#include <stdio.h>
#include <stdlib.h>

int main()

{

    char * names[10] = {"Dave","Al","Roger","Gary","Marc","Tim","Bob","Cal","Sid","Joe"};

    int beginning;
    int end;
    int didSwap;
    char * temp = "This will be used to store names temporarily";
    int ctr;

    puts("\nHere are some random names:");
    for (ctr = 0; ctr < 10; ctr++)
    {   
        printf("%s\n", names[ctr]);
    }

    for (beginning = 0; beginning < 9; beginning++)
    {
        didSwap = 0;
        for (end = beginning; end < 10; end++)
        {
            if (names[end] < names[beginning])
            {
                temp = names[end];
                names[end] = names[beginning];
                names[beginning] = temp;
                didSwap = 1;
            }
        }
        if (didSwap == 0)
            {
                break;
            }
    }

    puts("\nHere are the random names now in alphabetical order:");
    for (ctr = 0; ctr < 10; ctr++)
    {   
        printf("%s\n", names[ctr]);
    }

    return(0);
}

您不能有用地将字符串与< ;进行比较。 您通常应该改用strcmp函数(除非您需要不区分大小写的排序,…)。 在C中,这些字符串是内存地址,因此您按字符串的地址而不是其值进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM