【问题标题】:Bubble sort to char pointers冒泡排序到 char 指针
【发布时间】:2016-04-09 15:53:45
【问题描述】:

我正在尝试制作一个将 char 指针插入到“char** arr”的程序,然后使用 strcmp 对 char 指针进行排序,但由于某种原因它不起作用,我添加的代码是排序部分整个代码。

do
    {
        flag = 0;

        for (i = 0; i < num - 1; i++)
        {
            if ((strcmp(arr[i], arr[i + 1])) < 0)
            {
                flag = 1;
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) > 0)
            {
                flag = 1;
                temp = arr[i + 1];
                arr[i + 1] = arr[i];
                arr[i] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) == 0)
            {
                flag = 1;
                continue;
            }
        }
    } while (flag == 1);

【问题讨论】:

  • 在一个无关的注释中,你不需要三个字符串比较,只需要一个,将结果保存到一个变量就足够了,然后比较变量。

标签: c sorting pointers bubble-sort char-pointer


【解决方案1】:
  1. 取决于您想要升序还是降序,您应该只在if 的一种情况下交换arr[i]arr[i+1]。 (strcmp() &lt; 0strcmp() &gt; 0 情况下)
  2. flag 仅应在实际发生交换时分配为 1。否则循环不会停止。

【讨论】:

  • 谢谢你,我试过你说的,程序还是崩溃。你觉得我应该怎么做?
  • @OfekEzon 使用调试器检查崩溃的位置以及哪个指针的值不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2018-05-25
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多