希望从最小到最大排序数组删除重复项

时间:2017-07-02 19:44:35

标签: c# .net

正如标题所说,我正在C#中免费上网,我已经坚持这个问题了。它要求使用从最小到最大排序的数组编写函数并删除重复的条目。该课程已经过了数组和排序,但目前还没有删除重复的方法。如果你可以帮助我,我会非常感激。

2 个答案:

答案 0 :(得分:0)

有几种方法可以完成手头的任务,但最快的方法可能是使用Linq:

int[] array = { 3, 5, 1, -9, 4, 8, 23, -657, 54 };
array = array.Distinct().OrderBy(x => x).ToArray();

答案 1 :(得分:0)

虽然可能有一些更有效的方法,为了帮助您更多地理解这些概念,这里有一个简单的技术。

您需要跟踪您已经看过的条目。创建一个新列表,并将数组中的第一个数字添加到它。然后,取出数组中的第二个数字,并将其与列表中的每个数字进行比较。如果它出现在此列表中,则它是重复的,因此您可以跳过此数字并移动到数组中的下一个元素。

ArrayList list = new ArrayList();
for (int i = 0; i < yourUnsortedArray.length; ++i) {
    bool hasDuplicate = false;
    for (int entry in list ) {
        if (yourUnsortedArray[i] == entry) {
            hasDuplicate = true;
            break;
        }
    }
    if (hasDuplicate == false) {
         list.Add(yourUnsortedArray[i]);
    }
}
//list will have no duplicates here.

奖金优化:如果您先对数组进行排序,将会有所帮助。这样,您只需要查看列表中最近添加的数字,而不是每次都查看整个列表。

ArrayList list = new ArrayList();
for (int i = 0; i < yourSortedArray.length; ++i) {
    if (list.length == 0 || list[list.length - 1] != yourSortedArray[i]) {
         list.Add(yourSortedArray[i]);
    }
}