bsr1983 发表于 2013-1-26 15:51:08

C语言实现的排序代码

      准备数据结构上级考试时的练习代码,置于此以备后用!
     
      
#include<stdio.h>#define MAX 100//插入排序void insertSort(int* array,int n){       int i,j,temp;       for(i=1;i<n;i++)       {         //获取当前要进行排序的元素array         temp=array;         //比较已排序区的数据与当前要进行排序的数据,如果当前排序的元素较小,         //则后移已排序的元素,找到其合适的位置后插入         for(j=i;j>0&&temp<array;j--)         {                array=array;                array=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;                while((j>=0)&&(array>temp))                {                  //将a这一元素移动到组内的下一位置                  array=array;                  j=j-gap;//下一个组内元素的索引                }                array=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>array)             {                tmp=array;                array=array;                array=tmp;             }      }   }   printArray(array,n);}void printArray(int* array,int n){      int i;      for(i=0;i<n;i++)      {         printf("%d \t",array);      }      printf("\n");}void main(){      int array;      int i,len=0;      int tmpnum;      for(i=0;i<MAX;i++)      {          array=0;      }      printf("please input the number for sort,end with -1\n");      do      {          scanf("%d",&tmpnum);          if(tmpnum!=-1)          {             array=tmpnum;             len++;          }      }      while(tmpnum!=-1);      printArray(array,len);      //printf("冒泡排序\n");      //bobbleSort(array,len);      //printf("直接插入排序\n");      //insertSort(array,len);      printf("希尔排序\n");      shellSort (array,len);}  
页: [1]
查看完整版本: C语言实现的排序代码