• 插入排序


    今天复习了一下数据结构的插入排序,下面是算法和自己的一些理解

    void charu(int *a,int length)
    {
     int i,j,t;
     for( i=1;i<length;i++)//将第一个数子看为有序的数组,从第二个数开始依次插入
     {
      t=a[i];//将要插入的数记录下来,防止前面的数后移而丢失
      if(a[i]<a[i-1])//判断下一个要插入的数是否大于它的前一个数,如果大于的话,则不必执行for循环,因为前面的都已有序
      {
          for( j=i-1;t<a[j];j--)//让数组下标指向要插入数(t)的前一个数,如果前一个数逆序(即前一个数比要插入的数大),则让前一个数后移一位,数组下标继续向前,直到退出循环,此时的话,前一个数小于要插入的数,后一个数大于要插入的数,此时的位置便是要插入的位置
          {
           a[j+1]=a[j];//数组后移
          }
          a[j+1]=t;//将t插入要插入的位置,因为最后一部j已经减1,所以j+1才是要插入的位置
      }
     }
    }

  • 相关阅读:
    数数小木块
    Triangular Sums
    Financial Management
    阶乘因式分解(一)
    另一种阶乘问题
    韩信点兵
    Fibonacci数
    A+B Problem
    16进制的简单运算
    浅谈数据库之事务
  • 原文地址:https://www.cnblogs.com/runninglzw/p/3759958.html
Copyright © 2020-2023  润新知