代码改变世界

Array Reserve

2010-04-23 18:55  蜡笔小旧  阅读(332)  评论(0编辑  收藏  举报
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SurfaceQuestion.Grammar
{
    
public class ArrayReverse
    {
        
public ArrayReverse()
        {
            
int[] a = new int[] { 123456 };
            
this.Way1(a);
            Console.WriteLine(
"_____________________");

            
this.Way2(a);
            Console.WriteLine(
"_____________________");

            
this.Way3(a);
        }

        
/// <summary>
        
/// 新数组
        
/// </summary>
        private void Way1(int[] a)
        {
            
int[] b = new int[a.Length];
            
for (int i = 0; i < a.Length; i++)
            {
                Console.WriteLine(
"count:"+i);
                Console.Write(a[i]);
                b[i] 
= a[a.Length - 1 - i];
            }

            Console.WriteLine();
            
foreach (var item in b)
            {
                Console.Write(item);
            }
        }

        
/// <summary>
        
/// 临时变量
        
/// </summary>
        
/// <param name="a"></param>
        private void Way2(int[] a)
        {
            
foreach (var item in a)
            {
                Console.Write(item);
            }

            
int temp = 0;
            
for (int i = 0; i < a.Length/2; i++)
            {
                Console.WriteLine(
"count:" + i);

                temp 
= a[i];
                a[i] 
= a[a.Length - 1 - i];
                a[a.Length 
- 1 - i] = temp;
            }

            Console.WriteLine();
            
foreach (var item in a)
            {
                Console.Write(item);
            }
        }

        
/// <summary>
        
/// while
        
/// mscorlib实现方式
        
/// </summary>
        
/// <param name="a"></param>
        private void Way3(int[] a)
        {
            
foreach (var item in a)
            {
                Console.Write(item);
            }

            
int num = 0;
            
int num2 = a.Length - num - 1;
            
while (num2 > num)
            {
                Console.WriteLine(
"count:" + num);

                
int temp = a[num];
                a[num] 
= a[num2];
                a[num2] 
= temp;
                num
++;
                num2
--;
            }

            Console.WriteLine();
            
foreach (var item in a)
            {
                Console.Write(item);
            }
        }
    }
}