如何对数组进行冒泡排序,但保留值

时间:2017-04-29 13:27:45

标签: c# bubble-sort

好的,所以我有一个数组,其中包含6个月(jan-jun)每个月注册的客户数量的6个值。让我们说CustomerSavedByMonth [i]。现在这些按月排序,因此在0指数时,有1月份,1个月份的客户等。

我想使用冒泡排序对这些进行排序,以便我可以显示最高客户的月份。然而,当我对它们进行冒泡排序时,它们将失去上下文,因为现在它们没有特定的月份它们只是有序。我真的不知道如何更好地解释它,所以我希望这是有道理的。我怎样才能确保当它排序时我仍然知道哪个月是什么数字?如果这是一个愚蠢的问题,我为此道歉,但我无法弄清楚如何处理它。感谢

1 个答案:

答案 0 :(得分:1)

接近这个的一个简单方法是设置一个索引数组,然后你可以对它进行排序,对数据数组中相应项的值进行比较,这样你就不会失去对月份的跟踪。

上述简单的C#实现如下:

        int[] CustomerByMonth = { 60, 50, 40, 30, 20, 10 };
        int[] index = { 0, 1, 2, 3, 4, 5 };

        int tmp = 0;
        for (int i = 0; i < index.Length; ++i)
        {
            for (int j = 0; j < index.Length - 1; ++j)
            {
                if (CustomerByMonth[index[j]] > CustomerByMonth[index[j + 1]])
                {
                    tmp = index[j + 1];
                    index[j + 1] = index[j];
                    index[j] = tmp;
                }
            }
        }

        // Display month number and customer amount for month with highest amount of customers
        Console.Write(index[CustomerByMonth.Length - 1] + " : " + CustomerByMonth[index[CustomerByMonth.Length - 1]]);