`
bsr1983
  • 浏览: 1100786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言实现的排序代码

阅读更多

      准备数据结构上级考试时的练习代码,置于此以备后用!

     

      

#include<stdio.h>
#define MAX 100
//插入排序
void insertSort(int* array,int n)
{
       int i,j,temp;
       for(i=1;i<n;i++)
       {
           //获取当前要进行排序的元素array[i]
           temp=array[i];
           //比较已排序区的数据与当前要进行排序的数据,如果当前排序的元素较小,
           //则后移已排序的元素,找到其合适的位置后插入
           for(j=i;j>0&&temp<array[j-1];j--)
           {
                array[j]=array[j-1];
                array[j-1]=temp;
            }
            printf("第%d趟排序:",i);
            printArray(array,n);
       }
  }
  //希尔排序
void shellSort(int* array,int n)
{
       int i,j,temp;
       int gap=0;
       //根据n大小,确定首次排序的分组间隔大小
       while(gap<=n)
       {
           gap=gap*3+1;
       }
       printf("元素总数为:%d,首次分组间隔gap=%d\n",n,gap);
       //当分组间隔大于0时,对各分组的元素进行组内排序
       while(gap>0)
       {
            printf("分组间隔gap=%d\n",gap);
            //对组内元素进行直接插入排序
            for(i=gap;i<n;i++)
            {
                //获取下一个要进行排序的组内元素索引
                j=i-gap;
                temp=array[i];
                while((j>=0)&&(array[j]>temp))
                {
                    //将a[j]这一元素移动到组内的下一位置
                    array[j+gap]=array[j];
                    j=j-gap;//下一个组内元素的索引
                }
                array[j+gap]=temp;
            }
            gap=(gap-1)/3;//获取下一个分组间隔
       }
       printArray(array,n);
}
  //冒泡排序
  void bobbleSort(int* array,int n)
  {
     int i,j,tmp;
     for(i=0;i<n;i++)
     {
        for(j=i;j<n;j++)
        {
             if(array[i]>array[j])
             {
                tmp=array[i];
                array[i]=array[j];
                array[j]=tmp;
             }
        }
     }
     printArray(array,n);
  }
  void printArray(int* array,int n)
  {
      int i;
      for(i=0;i<n;i++)
      {
         printf("%d \t",array[i]);
      }
      printf("\n");
  }
  void main()
  {
      int array[MAX];
      int i,len=0;
      int tmpnum;
      for(i=0;i<MAX;i++)
      {
          array[i]=0;
      }
      printf("please input the number for sort,end with -1\n");
      do
      {
          scanf("%d",&tmpnum);
          if(tmpnum!=-1)
          {
             array[len]=tmpnum;
             len++;
          }
      }
      while(tmpnum!=-1);
      printArray(array,len);
      //printf("冒泡排序\n");
      //bobbleSort(array,len);
      //printf("直接插入排序\n");
      //insertSort(array,len);
      printf("希尔排序\n");
      shellSort (array,len);
  }

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics