• 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("}
    ");
                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();
    
            }
        }
    }
  • 相关阅读:
    J2那几个E和Web基础
    PHP开发人员对JAVA的WEB开发入门(初版-基础知识)
    一个处理大数据的后台服务(已废弃)
    一个请求过来都经过了什么
    请一定记得升级java虚拟机
    面向对象之 结构体和类的区别
    Swift 结构体的使用
    iOS 波浪效果的实现
    iOS 常用三方(持续更新)
    Xshell 链接 Could not connect to '192.168.80.129' (port 22): Connection failed
  • 原文地址:https://www.cnblogs.com/drift-code/p/8818494.html
Copyright © 2020-2023  润新知