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

直接插入排序代码实现:

  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;

      }  

    }

  }

}

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

相关文章:

  • 2022-02-21
  • 2022-12-23
  • 2021-10-06
  • 2022-01-02
  • 2021-09-03
  • 2021-12-31
  • 2022-03-04
猜你喜欢
  • 2021-07-15
  • 2021-05-02
  • 2022-01-02
  • 2021-04-21
  • 2021-09-10
  • 2021-10-19
相关资源
相似解决方案