VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之C#之插入排序

算法描述

1.假定数组第一位为有序序列,抽出后一位元素与有序序列中元素依次比较;

2.如果有序序列元素大于抽出元素,将该元素向后移位;

3.重复前面步骤依次抽取无序序列中首位元素进行比较,直到所有数值排序完成;

 

代码实现

复制代码
        /*
        例如:对数组:{ 2,7,6,3,1 }进行比较 

        第一轮:{ 2,7,6,3,1 } :共比较一次
        第二轮:{ 2,6,7,3,1 } :共比较二次
        第三轮:{ 2,3,4,7,1 } :共比较三次
        第四轮:{ 1,2,3,6,7 } :共比较四次
        */
        public void Insert(int[] arr)
        {
            int number;
            int numIndex;

            for (int i = 1; i < arr.Length; i++)
            {
                number = arr[i];
                numIndex = i - 1;

                while (numIndex >= 0 && number < arr[numIndex])
                {
                    arr[numIndex + 1] = arr[numIndex];
                    numIndex--;
                }

                arr[numIndex + 1] = number;

                Console.Write("插入排序:");
                foreach (int item in arr)
                {
                    Console.Write(item + " ");
                }
                Console.WriteLine();
            }

        }
复制代码

完整代码

复制代码
using System;

namespace InsertSortApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var setArray = new SetArray();
            var insertSort = new InsertSort();

            int[] arr = setArray.GetArray();
            insertSort.Insert(arr);

            Console.ReadLine();
        }
    }

    class SetArray
    {
        public int[] GetArray()
        {
            int length;
            int[] arr;

            Console.WriteLine("请输入数组长度:");
            length = Convert.ToInt32(Console.ReadLine());

            arr = new int[length];

            for (int i = 0; i <= length - 1; i++)
            {
                Console.Write("请输入数值第{0}位数值:", i);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }

            Console.Clear();

            Console.Write("arr[] = {");
            foreach (int item in arr)
            {
                Console.Write(item + " ");
            }
            Console.Write("}\n");
            return arr;
        }
    }

    class InsertSort // 插入排序
    {
        public void Insert(int[] arr)
        {
            int number;
            int numIndex;

            for (int i = 1; i < arr.Length; i++)
            {
                number = arr[i];
                numIndex = i - 1;

                while (numIndex >= 0 && number < arr[numIndex])
                {
                    arr[numIndex + 1] = arr[numIndex];
                    numIndex--;
                }

                arr[numIndex + 1] = number;
            }

            Console.Write("插入排序:");
            foreach (int item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

        }
    }
}


相关教程