希尔排序

发布时间:2016-12-9 8:08:24 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"希尔排序",主要涉及到希尔排序方面的内容,对于希尔排序感兴趣的同学可以参考一下。

#include <stdio.h> #include <string.h> int shellsort(int ar[], int N) {  int incr=0, i=0,j=0;  int tmp=0;  for(incr=N/2; incr>0; incr=incr/2)  {  printf("incr=%d\r\n", incr);   for(i=incr; i<N; i++)   {    //tmp=ar[i]    for(j=i; j>=incr; j-=incr)    {     printf("exchanged ar[%d]=%d with ar[%d]=%d\r\n", j, ar[j], j-incr, ar[j-incr]);     if(ar[j]<ar[j-incr])     {      tmp=ar[j-incr];      ar[j-incr]=ar[j];      ar[j]=tmp;     }    }   }  } } int shellsort2(int ar[], int N) {  int incr=0, i=0,j=0;  int tmp=0;  int ex=0;  for(incr=N/2; incr>0; incr/=2)  {   do   {    for(j=0; j<N-incr; j++)    {     ex=0;      tmp=ar[j];      if(tmp>ar[j+incr])      {       ar[j]=ar[j+incr];       ar[j+incr]=tmp;       ex=1;      }         }   }while(ex);  } } void shell_sort(int array[],int size) {  int temp,gap,i,exchange_occurred;  gap=size/2;  do  {   do   {    exchange_occurred=0;    for(i=0;i<size-gap;i++)     if(array[i]>array[i+gap])     {      temp=array[i];      array[i]=array[i+gap];      array[i+gap]=temp;      exchange_occurred=1;     }   }   while(exchange_occurred);  }  while(gap=gap/2); } int main() {  int i=0;  int n=10;  int ar[10]={9, 33, 6, 7, 44, 11,1, 3,8, 2};  shellsort2(ar, n);  for(i=0; i<n; i++)  {   printf("ar[%d]=%d\r\n",i, ar[i]);  } }

上一篇:Data Structures
下一篇:win+r

相关文章

关键词: 希尔排序

相关评论