c# – 为什么这种反向数组方法不起作用?
发布时间:2020-12-15 19:29:01 所属栏目:百科 来源:网络整理
导读:我正在尝试制作一个反转数组的方法,我不知道它为什么不起作用? 当我说int [] arr = array时,我想这样做,所以它不会受到影响所以我可以使用第二个for循环的元素,它应该有元素{1,2,3,4,5,6}但是当我用的时候 for (int i=array.Length-1;iarray.Length/2;i--){
我正在尝试制作一个反转数组的方法,我不知道它为什么不起作用?
当我说int [] arr = array时,我想这样做,所以它不会受到影响所以我可以使用第二个for循环的元素,它应该有元素{1,2,3,4,5,6}但是当我用的时候 for (int i=array.Length-1;i>array.Length/2;i--) { array[i] = arr[array.Length - 1 - i]; } 在这种情况下我有6个元素,从而array.Length是6和自我从array.Length-1开始它必须从最后一个元素开始,并且必须是阵列[5] = ARR [6-1-5]其中必须array [5] = arr [0]和arr [0]是1,但我认为它是6,为什么? 这是完整的代码: // ReverseArray method static int [] ReverseArray(int [] array) { int[] arr = array; for (int i=0; i<array.Length/2;i++) { array[i] = array[array.Length-1 - i]; } for (int i=array.Length-1;i>array.Length/2;i--) { array[i] = arr[array.Length - 1 - i]; } return array; } // Method for displaying elements of Array static void DisplayArray(int [] array) { int i; Console.Write("{"); for (i = 0; i < array.Length-1; i++) { Console.Write(array[i] + ","); } Console.WriteLine(array[i] + "}"); } static void Main(string[] args) { int[] array = { 1,6}; ReverseArray(array); DisplayArray(array); Console.ReadKey(); } 解决方法
你的反转方法是无效的:而不是在索引i和array.Length-1-i上交换元素,你的代码将数组的尾部复制到初始部分,有效地将数组“折叠”到自身上.
你需要删除第二个循环,并用swap替换赋值:make一个临时变量,store array [i],copy array [array.Length-1 – i],然后在它的位置写临时. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |