先用最小的数排序向量,做完全相反的事

本文关键字:向量 排序 | 更新日期: 2023-09-27 17:51:22

我一整天都在尝试让这个向量/对象排序器,即使我交换了符号(<似乎什么也没发生。我有一些随机排列的整数,程序的目标是按大小对它们进行排序。我已经在纸上画了草图,以便更好地概述,但当我试图按照降序从低到高进行排序时,似乎是从高到低。我希望密码里的瑞典人不会打扰你。任何帮助都会很感激。谢谢你。>

    for (int i = 0; i < 25; i++)
            {
                for (int a = i; a < 25; a++)
                {
                    int ettan = price[i];
                    int tvåan = price[a];
                    if (ettan > tvåan)
                    {
                        dryck tmp = new dryck(null, 0, null);
                        tmp = drycker[i];
                        drycker[i] = drycker[a];
                        drycker[a] = tmp;
                        continue;
                    }
                }
            }

编辑:忘记添加,它应该比较第一个整数[0]与[1][2]等,直到它找到一个低于[i],然后相互交换,所以较低的整数被放在第一个位置等

先用最小的数排序向量,做完全相反的事

最初c#中的vectors被称为Arrays;-)

简而言之,你拿错误的价格来比较产品。但是为什么呢?让我用一个例子来说明:

有两个重要的数组:

drycker:               Prices:
 Cola          ->         25
 Fanta         ->         20
 Sprite        ->         30

当你比较可乐和芬达时,新的列表是这样的:

drycker:               Prices:
 Fanta         ->         25     -> the price for Fanta is now 25
 Cola          ->         20
 Sprite        ->         30

关键是你在比较产品和它们的位置,你改变了产品,但没有改变它的价格。答案:也要更改价格,以保持数组的一致性。


其他建议:

也许一个数组(drycker)是足够的(取决于代码)。然后你可以直接比较:

if( ((dryck) drycker[i]).price > ((dryck) drycker[a]).price)

或者你可以使用Linq和List:

List<dryck> drycker = new List<dryck>(); //strongly typed lists are always recommended
drycker.Sort(x => x.price);

最后的建议可能包含一些新的东西给你。你可以搜索List, LinqLambda expressions来深入一点。但这只是"高质量"的解决方案:)