插入排序和希尔排序的比较

  希尔排序在一定程度是直接插入排序的升级,二者均需要选择一个靶向元素。直接插入比较适合一些较为有序的长度较小的序列。

直接插入排序代码实现:

  void insertsort(int arr[],int len)

{

for(p = 1;p < len;p++){

  temp = arr[p]

  for(j = p;j > 0 && arr[j-1] > temp;){

    arr[j] = arr[j-1];

    arr[j-1] = temp;

  } 

 }

}

希尔排序代码实现:

  void shellsprt(int arr[],int len)

{  

  int gra;

  for(gra = len/2;gra > 0;gra /=2){//用这个循环来控制步长

   for(k = gra;k < len;k++){

        temp = arr[j]

        for(j = k;j > 0 && arr[j -1] > temp;j -= gra){//找到与其配对的元素

          arr[j] = arr[j-1];

          arr[j-1] = temp;

      }  

    }

  }

}

在一定程度上希尔排序就是在直接插入排序的基础上加上一个步长。

笨鸟先飞
原文地址:https://www.cnblogs.com/zoutingrong/p/12173884.html