繁体   English   中英

用C#排序不保存位置

Sort in C# don't save the place

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个名为move的类,它有一个名为val的int类型的字段,还有一个名为mlist的动作的列表。

我写了这个

mlist.Sort((b, a) =>
    {
       if (a.val > b.val)
           return 1;
       else if (a.val == b.val)
           return 0;
       else
           return -1;
    }
    );

首先,当我对列表进行排序时,列表中有两个对象都具有.val =0。这两个对象的位置已更改。 但是我不希望发生这种情况。 我能做什么?

3 个回复

排序执行快速排序,这是不稳定的排序。

如果您想进行稳定的排序,则可以使用可通过LinQ使用的OrderBy方法。

在您的示例中使用OrderBy将假设mListList<>

mList = mList.OrderBy(a => a.val).ToList();

如果您希望反向排序,该方法称为OrderByDescending

正如@Hans Kesting所说,排序是不稳定的。 在此处了解有关稳定排序的信息:http://www.csharp411.com/c-stable-sort/

您应该使用orderBy:

   MyComparer comparer=new MyComparer();
   mlist=  mlist.OrderBy(p => p, comparer).ToList();



  public class Comparer : IComparer<YourObject>
    {


        public int Compare(YourObject a, YourObject b)
        {

            if (a.val > b.val)
                return 1;
            else if (a.val == b.val)
                return 0;
            else
                return -1;

        }
    }
1 c# 位图不按原样保存

大家好,我在我的大学从事一个基本的隐写术项目。 我操纵我的位图,但某处有一个错误。 我放了一个断点只是为了检查 .save() 方法之前的值,像素看起来不错,但是当我保存它并打开新图像时,一些像素是预期的 +-1 位状态。 这是代码: ...

2 就地合并排序| C#[重复]

这个问题已经在这里有了答案: 如何使用合并排序算法进行就地排序? 10个答案 我已经编写了一个用于合并排序的程序,该程序可以正常工作,直到合并时它不能正确合并 例如示例: mergesort.in://所有数字均为一个数组,不使用临时数组进行排序 ...

3 不知道在哪里放置 saveData 以在 Swift 中使用 userDefaults 保存数据

我试图在被用户更改后保存我的数据,我从我的模型中保存数据的事情也是我从我的模型类中获取数据,我想在视图消失后保存数据,所以所有数据都将保存,我可以从我的模型中获取数据(当我再次初始化它时),我有点迷失了实现它的方式:\\这是我的 VC 代码:我在那里设置我的 tableView 单元格 + 想在那里 ...

4 VSTO C# - 如何编辑 .xltx 文件而不将其另存为新文件

我不明白为什么这不适用于 XLTX 文件。 我的代码可以很好地处理 XLSX 文件。 我正在使用 Microsoft.Office.Interop.Excel,一个用于sourceFilePath的打开文件对话框,一个用于path的保存文件对话框。 如果使用 XLTX,则不会保存 sheet.n ...

5 C#链表对值进行排序并在正确的位置插入int

我正在尝试创建一个链接列表函数,该函数将列表按降序排列(例如1,2,6,9),并将整数(5)插入正确的位置(例如1,2,5,6,9) )。 到目前为止,我已经创建了一个要读取的临时列表和一个要写入的新列表。 但是,我无法成功将整数放入正确的位置。 程序控制台调用代码 Lin ...

2019-10-21 18:59:18 2 82   c#
8 是否有某种库函数可以对c#数组进行就地排序?

我有一个经常被排序的小数组。 我的统一游戏对分配非常敏感,因此我宁愿分配0而不是节省CPU周期。 Array.Sort()导致在OSX上unity的mono实现上的分配。 我可以轻松地手写排序器,但是标准(.net 3.5)库中有什么可以进行无分配排序的吗? ...

9 排序队列 到位

注意:我必须使用.net 3.5 所以没有人知道在适当位置排序Queue&lt;T&gt;任何方法。 我的意思是没有任何额外的记忆。 我的Queue&lt;T&gt;很大-这是为什么我需要在原位排序的一般原因。 和.OrderBy()类的解决方案不匹配。 同样,我也不必每次 ...

10 就位排序为IList

.NET是否具有针对IList的就地排序功能? 我需要对集​​合本身进行排序,而不是创建新集合。 编辑:我需要进行适当排序的原因是避免重新绘制UI,除非实际更改过。 如果只有一项不合适,我不想创建一百个新的自定义控件。 编辑:同样,这是关于就地排序的问题,而不仅仅是一般的排序。 ...

2013-10-03 19:04:32 4 277   .net
暂无
暂无

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

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