首先分析一下:數(shù)組的逆序就是 數(shù)組的長度為n=array.Length-1. 把第1個和倒數(shù)第1個交換 把第2個和倒數(shù)第2個交換 把第3個和倒數(shù)第3個交換 ..................................... 如果讓left從第一個索引開始,right從倒數(shù)第一個索引開始。 交換位置 left+1,成為數(shù)組的第二個數(shù)。 right-1,成為數(shù)組的倒數(shù)第2個數(shù) ............... 一直這樣,直到left>=right 交換完畢。 該算法是線性的。復(fù)雜度為大O(n)。 C#的代碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace reverseArray { class Program { /// <summary> /// 倒序數(shù)組 /// </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> /// 顯示數(shù)組 /// </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("--------逆序數(shù)組--------------"); reverse(nums); display(nums); Console.Read(); } } } |
|