zoukankan      html  css  js  c++  java
  • 排序算法---插入排序

    1.直接插入排序

     1 void insetSort(int *arr, int n)
     2 {
     3     int i, j, k;
     4     
     5     for(i = 1; i < n; i++)
     6     {
     7         for(j = i - 1; j >= 0; j--)
     8         {
     9             if(arr[j] < arr[i])
    10             {
    11                 break;
    12             }
    13         }
    14         
    15         if(j != i - 1)
    16         {
    17             int temp = arr[i];
    18             
    19             for(k = i - 1; k > j; k--)
    20             {
    21                 arr[k + 1] = arr[k];
    22             }
    23             
    24             arr[k + 1] = temp;
    25         }
    26     }
    27 }

    2.希尔排序

     1 void insetSort(int *arr, int n, int dk)
     2 {
     3     int i, j, k;
     4     
     5     for(i = dk; i < n; i++)
     6     {
     7         for(j = i - dk; j >= 0; j -= dk)
     8         {
     9             if(arr[j] < arr[i])
    10             {
    11                 break;
    12             }
    13         }
    14         
    15         if(j != i - dk)
    16         {
    17             int temp = arr[i];
    18             
    19             for(k = i - dk; k > j; k -= dk)
    20             {
    21                 arr[k + dk] = arr[k];
    22             }
    23             
    24             arr[k + dk] = temp;
    25         }
    26     }
    27 }
    28 
    29 void shellSort(int *arr, int n)
    30 {
    31     int dk = 0;
    32     
    33     dk = n >> 1;
    34     while(dk >= 1)
    35     {
    36         insetSort(arr, n, dk);
    37         dk = dk >> 1;
    38     }
    39 
    40 }

      当希尔排序的步长为1时,就等同于直接插入排序。

  • 相关阅读:
    msp430入门编程41
    msp430入门编程40
    msp430入门编程37
    msp430入门编程36
    msp430入门编程35
    msp430入门编程34
    msp430入门编程33
    msp430入门编程31
    msp430入门编程32
    msp430入门编程30
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11320033.html
Copyright © 2011-2022 走看看