插入排序(CSharp)

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 20; i++)
            {
                int[] a = Arrays(10);
                //输出初试数组
                Console.WriteLine("\n最初的数组");
                PrintArrays(a);
                Console.WriteLine("\n插入排序后");
                sort(a);
                PrintArrays(a);

            }

           // Console.Read();
        }

        //生成初试数组
        private static int[] Arrays(int length)
        {
            int[] a = new int[length];
            Random r = new Random();
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = (int)(r.NextDouble()*100);
            }
            return a;
        }

        //输出数组
        private static void PrintArrays(int[] a)
        {
            foreach (object o in a)
            {
                Console.Write(o+"\t");
            }
        }
        //用插入法排序
        private static void sort(int[] a)
        {
            int temp = 0;
            //从第二个数开始,与其前面的元素比较!
            for (int i = 1; i < a.Length; i++)
            {
                for (int j = 0; j < i; j++)
                {
                    /*循环遍历a[i]之前的元素,与a[i]比较,
                      当a[i]<=a[j]时,a[i]肯定大于a[j-1](如果存在a[i-1]的话)
                     */
                    if (a[i]<=a[j])
                    {
                        //a[i]占据a[j]的位置从j+1到i,元素依次由它前面的元素替代
                        temp=a[i];
                        for (int k = i; k >j; k--)
                        {
                            a[k]=a[k-1];
                        }
                        a[j] = temp;
                    }

                }
            }
        }
        
    }
}

你可能感兴趣的:(数据结构,排序,算法,职场,休闲)