首先分析一下:数组的逆序就是 数组的长度为n=array.Length-1. 把第1个和倒数第1个交换 把第2个和倒数第2个交换 把第3个和倒数第3个交换 ..................................... 如果让left从第一个索引开始,right从倒数第一个索引开始。 交换位置 left+1,成为数组的第二个数。 right-1,成为数组的倒数第2个数 ............... 一直这样,直到left>=right 交换完毕。 该算法是线性的。复杂度为大O(n)。 C#的代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace reverseArray { class Program { /// <summary> /// 倒序数组 /// </summary> /// <param name="nums"></param> public static void reverse(int[] nums) { //左边索引 int left = 0; //右边索引 int right = nums.Length-1; //左右不等,一直交换 while (left < right) { int temp = nums[left]; nums[left]=nums[right]; nums[right] = temp; left++; right--; } } /// <summary> /// 显示数组 /// </summary> /// <param name="nums"></param> public static void display(int[] nums) { foreach (var item in nums) { Console.WriteLine(item); } } static void Main(string[] args) { int[] nums = { 5,4,10,3,6,8,9,45}; display(nums); Console.WriteLine("--------逆序数组--------------"); reverse(nums); display(nums); Console.Read(); } } } |
|
来自: 雪柳花明 > 《数据结构与算法C#语言描述》