如何更新列表顺序而不重新排序列表?

时间:2013-10-30 22:34:52

标签: c# algorithm sorting

我在sql-server表中有以下项目。 (大小> 100K)

Name   Order
x      1
...    n
y      25
...    n
z      300
...    n

当项目的更改顺序时,(z = 25)我需要重新排序所有项目(x = 1,z = 25,y = 26)我的解决方案是使用十进制顺序列并使用以下公式计算新订单:“(之前订单+下一个订单)/ 2“(x = 1,z = 24.5,y = 25)已更改订单商品。这个解决方案确定,但每个更改顺序的小数精度增量。 (如果之前改变了)

有什么方法吗?

1 个答案:

答案 0 :(得分:1)

您应该使用List作为数据结构。列表中的数据是有序的,因此当您在y之前插入'z'时,例如:

MyList.Remove('z')
MyList.Insert(MyList.IndexOf('y'), 'z');

然后重新排序列表:

MyList.IndexOf('z');  //will return 25
MyList.IndexOf('y');  //will return 26

您可以通过以下方式访问这些值:

MyList[25];  //will return 'z'
MyList[26];  //will return 'y'

请注意,List的索引是从0而不是从1开始。