欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#之插入排序

程序员文章站 2022-06-24 08:36:41
算法描述 1.假定数组第一位为有序序列,抽出后一位元素与有序序列中元素依次比较; 2.如果有序序列元素大于抽出元素,将该元素向后移位; 3.重复前面步骤依次抽取无序序列中首位元素进行比较,直到所有数值排序完成; 代码实现 完整代码 ......

算法描述

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

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

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

 

C#之插入排序

代码实现

        /*
        例如:对数组:{ 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();

        }
    }
}