C语言算法:希尔排序,图解
 
        玩转嵌入式  
        
         
         
        
      
 
       
     
         专注于单片机、ARM、嵌入式等硬件、软件设计经验的分享,并提供一定的技术支持。我已加入“维权骑士”(rightknights.com)的版权保护计划 
       
 
       
     Official Account 
   
 
  来源:嵌入式linux | 排版:玩转嵌入式
  
    
    
  
   
     
     
   #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int shell_sort(int arr[],int n)
{
    register int i, j, tmp;
    int step;
    for(step = n/2; step > 0;step /= 2)/*增量步长*/
    {
        /*step = 4 2 1*/
        for(i = step; i < n; i++)
        {
            tmp = arr[i];
            j = i - step;
            for(;j >= 0 && tmp < arr[j];)
            {
                arr[j + step] = arr[j];
                j -= step;
            }
            arr[j + step] = tmp;
        }
    }
}
#define LENGTH 8
int main( int argc, int *argv[])
{
    int i;
    int arr[LENGTH] = {6,5,3,1,8,7,2,4};
    for(i=0;i<LENGTH;i++)
    printf("%d ",arr[i]);printf("\n");
    shell_sort(arr,LENGTH);
    for(i = 0;i < LENGTH;i++)
    printf("%d ", arr[i]);printf("\n");
}
  
    
    
    
  
    
    
  
   
     
     
   6 5 3 1 8 7 2 4 
1 2 3 4 5 6 7 8 
  
    
    
    
