【问题标题】:How to Keep Data Paired Together in Insertion Sort如何在插入排序中保持数据配对
【发布时间】:2020-04-11 02:45:59
【问题描述】:

我一直在处理文件中的数据并将它们配对在一起。我需要按字母顺序对数据进行排序,同时将它们配对在一起。我在这里用冒泡排序成功地做到了:

     for (int i = 1; i <= count; i++)
     {
         for (int j = 0; j < count - 1; j++)
         {
             if (email [j].compareToIgnoreCase (email [j + 1]) > 0)
             {
                 temp1 = email [j];
                 email [j] = email [j + 1];
                 email [j + 1] = temp1;

                 temp2 = fname [j];
                 fname [j] = fname [j + 1];
                 fname [j + 1] = temp2;

                 temp3 = lname [j];
                 lname [j] = lname [j + 1];
                 lname [j + 1] = temp3;

                 temp4 = city [j];
                 city [j] = city [j + 1];
                 city [j + 1] = temp4;

                 temp5 = age [j];
                 age [j] = age [j + 1];
                 age [j + 1] = temp5;
             }
         }
     }
}

我得到这样的输出: 电子邮件: bobbarley@gmail.com 名: 鲍勃 姓: 大麦 城市: 温哥华 年龄: 13 电子邮件: felixfixed@gmail.com 名: 菲利克斯 姓: 固定的 城市: 波士顿 年龄: 24 电子邮件: joejake@gmail.com 名: 乔 姓: 杰克 城市: 多伦多 年龄: 32

另一方面,我有一个插入排序,但我无法将数据放在一起。这是我的代码:

for (int i = 1; i < count; i++)
    {
        String current = fname [i];
        int j = i - 1;

        while (j >= 0 && current.compareToIgnoreCase (fname [j]) < 0)
        {
            fname [j + 1] = fname [j];
            j--;
        }
        fname [j + 1] = current;
    }

通过这部分,我得到以下输出:

名字: 鲍勃 姓: 杰克 城市: 多伦多 年龄: 32 电子邮件: joejake@gmail.com 名: 菲利克斯 姓: 大麦 城市: 温哥华 年龄: 13 电子邮件: bobbarley@gmail.com 名: 乔 姓: 固定的 城市: 波士顿 年龄: 24 电子邮件: felixfixed@gmail.com

【问题讨论】:

  • Java 是一种面向对象的语言使用它! 不要使用并行数组。创建一个类,例如命名为 Person 有 5 个字段,然后使用这些对象的单个数组。

标签: java arrays sorting insertion-sort


【解决方案1】:

您通过邮件比较气泡然后您的其他字段执行排序,但插入只比较名称,为什么?也许您不应该在插入内容中与其他内容进行比较,以便对其进行排序

{for (int i = 1; i < count; i++)
    String current = fname [i];
    int j = i - 1;

    while ((j >= 0 && current.compareToIgnoreCase (fname [j]) < 0) and j>=0 && current.compareToIgnoreCase (email[j]....)
    {
        fname [j + 1] = fname [j];
        j--;
    }
    fname [j + 1] = current;
}

【讨论】:

    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2022-06-24
    • 2013-10-03
    相关资源
    最近更新 更多