shell排序

来源:互联网 发布:微信服务号 域名 端口 编辑:程序博客网 时间:2024/06/05 03:09

#include <stdlib.h>
#include <stdio.h>
#include <iostream>

using namespace std;


void ShellInsert(int a[], int n,  int dk){
     int i=0,j=0;
     for(i=dk+1; i<=n; i++){
         if(a[i] < a[i-dk])
         {
             a[0] = a[i] ;
             for(j=i-dk; j>0 && a[0] < a[j]; j-=dk)
             {
                         a[j+dk] = a[j];
             }
             a[j+dk]=a[0];
         }
     } 
}

void ShellSort(int a[], int n, int dlta[], int t ){
     for(int k=0; k< t; k++)
     {
          ShellInsert(a, n, dlta[k]);   
     }
     for(int i=1; i<=n; i++)
     {
             cout<<a[i]<<endl;
     } 
}

int main(){
  
  int b[8] ={0, 12, 2, 3, 4, 7, 8, 19 };
  int dlta[3] = { 5, 3, 1};
  ShellSort(b, 7, dlta, 3);
  
  system("PAUSE");
}

原创粉丝点击