如何按降序对实现的列表数据结构进行排序?

时间:2019-05-23 15:41:18

标签: c# list sorting

我需要按降序对列表进行排序。我该怎么做 ? 我有以下课程:

class Node
{
    public int data;
    public Node next; 
}
class List
{
    public Node head;
}

因此该方法必须具有以下签名

List Sorted(List x)

以便它返回另一个包含x元素但以降序排序的List。头部必须包含最大的元素。 我该如何实现?

2 个答案:

答案 0 :(得分:0)

希望对您有帮助

var objectordered = object.OrderBy(o => o.Desc).ToList();

或使用“排序”

var objectordered = object.Sort((obj1,obj2) => obj1.Desc.CompareTo(obj2.Desc));

答案 1 :(得分:0)

这是一个效率低下的实现,比bubble sort慢。它在原位对作为参数提供的列表进行排序,而不创建列表的排序副本。如果需要创建副本,则可能需要自己实施复制。

    @using (Html.BeginForm(actionName: "EditPermissions", controllerName: "Device", method: FormMethod.Post))
    {
    <table>
            @{
                    foreach (var User in Model.Users)
                    {
                            var deviceUserPermission = Model.DeviceUserPermissions.FirstOrDefault(x => x.UserId == User.UserId) ?? new RulesEngine.DAL.DeviceUserPermission()
                            { UserId = User.UserId, DeviceId = Model.DeviceId, PermissionId = 0 };

                            var selectList = new List<SelectListItem>();
                            foreach (var permission in Model.Permissions)
                            {
                                    selectList.Add(new SelectListItem() { Text = permission.PermissionName, Value = permission.PermissionId, Selected = (permission.PermissionId == deviceUserPermission.PermissionId) });
                            }

                            <tr>
                                    <td>
                                            @User.Description
                                    </td>
                                    <td>
                                            @Html.DropDownListFor(m => m.SelectedDeviceUserPermissions.FirstOrDefault(x => x.UserId == User.UserId).PermissionId, selectList, htmlAttributes: null)

                                    </td>
                            </tr>

                    }
            }
    </table>
    <input type="submit" value="Save" />
    }