程序代码:

  void InsertionSort(Elem R[],int n)

  {

    for(i = 2;i <= n;i++)

      if(R[i-1] > R[i])

      {

        R[0] = R[i];

        for(j = i-1;R[0] < R[j];j--)

          R[j+1] = R[j];

        R[j+1] = R[0];

      }

  }

最好情况:记录有序,比较次数为n-1,移动次数为0;

最差情况:记录逆序,比较次数2+3+---+n=(n+2)(n-1)/2,移动次数为(2+1)+(3+1)+---+(n+1)=(n+4)(n-1)/2。

稳定性:稳定。

相关文章: