zoukankan      html  css  js  c++  java
  • C#算法基础之插入排序

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 namespace ConsolePractice
      8 {
      9     class CArray
     10     {
     11         private int[] arr;
     12         //数组大小
     13         private int upper;
     14         //下标
     15         private int numElements;
     16 
     17         /// <summary>
     18         /// 初始化数组参数
     19         /// </summary>
     20         /// <param name="size"></param>
     21         public CArray(int size)
     22         {
     23             arr = new int[size];
     24             upper = size - 1;
     25             numElements = 0;
     26         }
     27 
     28         /// <summary>
     29         /// 插入方法
     30         /// </summary>
     31         /// <param name="item">存储的数</param>
     32         public void Insert(int item)
     33         {
     34             arr[numElements] = item;
     35             numElements++;
     36         }
     37 
     38         /// <summary>
     39         /// 输出方法
     40         /// </summary>
     41         public void DisplayElements()
     42         {
     43             for (int i = 0; i <= upper; i++)
     44             {
     45                 Console.Write(arr[i] + " ");
     46             }
     47             Console.WriteLine();
     48         }
     49 
     50         /// <summary>
     51         /// 清除数组
     52         /// </summary>
     53         public void Clear()
     54         {
     55             for (int i = 0; i <= upper; i++)
     56             {
     57                 arr[i] = 0;
     58             }
     59             numElements = 0;
     60         }
     61 
     62         /// <summary>
     63         /// 插入排序算法
     64         /// </summary>
     65         public void InsertionSort()
     66         {
     67             int inner, temp;
     68             for (int outer = 1; outer <= upper; outer++)
     69             {
     70                 temp = arr[outer];
     71                 inner = outer;
     72                 //把一个元素取出来逐个跟之前的元素比较。
     73                 //若该元素较小则较大的元素往右移。
     74                 //若该元素较大则结束循环。
     75                 while (inner > 0 && arr[inner - 1] >= temp)
     76                 {
     77                     arr[inner] = arr[inner - 1];
     78                     inner -= 1;
     79                 }
     80                 arr[inner] = temp;
     81                 this.DisplayElements();
     82             }
     83         }
     84     }
     85 
     86     class C_shape
     87     {
     88         static void Main()
     89         {
     90             CArray nums = new CArray(10);
     91             Random rnd = new Random(100);
     92             for (int i = 0; i < 10; i++)
     93             {
     94                 nums.Insert(rnd.Next(0, 100));
     95             }
     96             Console.WriteLine("Before sorting:");
     97             nums.DisplayElements();
     98             Console.WriteLine("During sorting:");
     99             nums.InsertionSort();
    100             Console.WriteLine("After sorting:");
    101             nums.DisplayElements();
    102             Console.ReadKey();
    103         }
    104     }
    105 }

    运行结果:

    结论:

    冒泡排序,选择排序和插入排序的执行效率:

    在数据较小时:选择排序和冒泡排序的执行效率相等,而插入排序则比其他两种算法速度的慢一倍。

    在数据较大时:执行效率:选择排序>冒泡排序>插入排序,选择排序执行效率最高

  • 相关阅读:
    vue hover如何触发事件?
    防止 window.open 被拦截
    input输入框change和blur事件区别
    神马?使用JS直接上传并预览粘贴板的图片?
    删除设备与驱动器中百度网盘图标
    枚举类字典代码 草稿
    中文转换成阿拉伯数字
    Java对象与类中的一个小练习
    正向代理和反向代理
    MySQL教程126-MySQL事务隔离级别
  • 原文地址:https://www.cnblogs.com/zt102545/p/3448238.html
Copyright © 2011-2022 走看看