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

C# 插入排序

程序员文章站 2022-06-21 13:15:44
插入排序,是循环遍历一个无序数组(例如有10个元素),把遍历出来的数值(第i个元素)插入到已经排过顺序的数组(这个有序数组有10-i个元素)中。 用一个 数组 举个例子: 初始数组:1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 第一次循环(i=0): ......

插入排序,是循环遍历一个无序数组(例如有10个元素),把遍历出来的数值(第i个元素)插入到已经排过顺序的数组(这个有序数组有10-i个元素)中。

用一个 数组 举个例子:

初始数组:1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 

第一次循环(i=0):1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 

第二次循环(i=1):  1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 

第三次循环(i=2):  1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 

第四次循环(i=3):1, 4, 34, 89, 56, 40, 59, 60, 39, 1, 40, 90, 48 

... ...

第13次循环(i=12)(结束):1, 1, 4, 34, 39, 4040, 48, 56, 59, 60, 89, 90

int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
for (int i = 0; i < sort.Length; i++)
    {
         int temp = sort[i];   // 临时存储第i个数的值
         int j = i;

         for (; j > 0 && temp < sort[j - 1]; j--)  // 遍历有j 个数的有序数组(j从0开始),当 temp 临时值小于sort[j-1](初始是,有j个数,j-1 为最后一个数)时,把当前第(j-1)位上的数向后移一位(j)
              {
                  sort[j] = sort[j - 1];

              }
                sort[j] = temp;  // 退出循环后,把temp 放到 第j 个位置上(j 是经过循环处理后得到的)
               
    }
for (int i = 0; i < sort.Length; i++) // 输出
    {
         Console.Write(sort[i] + " ");
    }