C#实现如何判断一个数组中是否有重复的元素
如何判断一个数组中是否有重复的元素
实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例
方法一:可以新建一个hashtable利用hashtable的Contains方法进行查找
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
方法二:使用for循环进行比较 需要注意的是j<=i 如果只是等于,实际上效率偏低,有重复计算可以自己摸索,有时间我画个图出来,^_^(这里感谢面试官的提醒)
1 /// <summary> 2 /// for循环 3 /// </summary> 4 /// <param name="yourValue"></param> 5 /// <returns></returns> 6 public static bool IsRepeat2(int[] array) 7 { 8 for (int i = 0; i < array.Length; i++) 9 { 10 for (int j = 0; j < array.Length; j++) 11 { 12 if (j <= i) 13 { 14 continue; 15 } 16 if (array[i] == array[j]) 17 { 18 return true; 19 } 20 } 21 } 22 return false; 23 }
测试代码:
1 static void Main(string[] args) 2 { 3 int[] array = new int[] { 1,2,3,4,3,6,7,8}; 4 int[] array2 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; 5 Console.WriteLine("---------------包含重复元素----------------"); 6 bool isrepeat = IsRepeat(array); 7 bool isrepeat2 = IsRepeat2(array); 8 Console.WriteLine(isrepeat); 9 Console.WriteLine(isrepeat2); 10 11 Console.WriteLine("---------------不包含重复元素----------------"); 12 bool isrepeat3 = IsRepeat(array2); 13 bool isrepeat4 = IsRepeat2(array2); 14 Console.WriteLine(isrepeat3); 15 Console.WriteLine(isrepeat4); 16 Console.Read(); 17 }
运行结果:
程序源代码工程下载
各位好汉如果有更好的方法能够优化程序,减少计算的次数,麻烦给出,感激!
返回一个数组升序排列后的位置信息--C#程序举例
返回一个数组升序排列后的位置信息--C#程序举例
返回某一个数组升序排序后的位置 比如:{8,10,9,11}排序后应该是{8,9,10,11},但是需要返回{1,3,2,4} 大概记忆里是这么个意思很明显这是一个算法题
同样这是一个面试题做倒是做出来了,但是效率太低了,我都看不上自己做的,感谢面试官给出的提示:这为什么要排序呢?
是的,这根本不需要排序,只需要找出比 对比的元素小的元素个数即可(有了这个思路)可以写篞B!V(0R B.r'& jB30cJ3>G&"v\bRv**_>Djb"G7rB*Σ*'"G1 Bn"C""Ggj曎+3>j9 /r jB33>Σ((((((((((