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