小工具知识网

当前位置: 首页 > 行业知识 > C语言实现排序算法的六种方式

行业知识

C语言实现排序算法的六种方式

2026-11-05 09:48:52 来源:互联网转载

1、冒���法

()
void Sort(int *pData,int count){int temp;int i,j;for(i=0;ifor(j=0;j           if(pData[j]pData[j+1]){   temp=pData[j];   pData[j]=pData[j+1];   pData[j+1]=temp;    }}}}int main(){int data[]={10,9,8,7,6,5,4}; Sort(data,7);int i;for(i=0;iprintf("%d\t",data[i]);}printf("\n");return 0;}int temp;int i,j;for(i=0;ifor(j=i+1;jif(pData[j]temp=pData[i];pData[i]=pData[j];pData[j]=temp;}}}}int main(){int data[]={10,9,8,7,6,5,3};Sort(data,7);int i;for(i=0;iprintf("%d\t",data[i]);}printf("\n");return 0;}int temp;int pos;int i,j;for(i=0;itemp=pData[i];pos=i;for(j=i+1;jif(pData[j]temp=pData[j];pos=j;}}pData[pos]=pData[i];pData[i]=temp;}}int main(){int data[]={10,11,23,65,78,3,5};Sort(data,7);int i;for(i=0;iprintf("%d\t",data[i]);}printf("\n");return 0;}int temp;int pos;int i,j;for(i=0;itemp=pData[i];pos=i-1;while((pos=0)&&(temppData[pos+1]=pData[pos];pos--;}pData[pos+1]=temp;}}int main(){int data[]={99,34,54,23,12,76};Sort(data,6);int i;for(i=0;iprintf("%d\t",data[i]);}printf("\n");return 0;}   int x=a[left];   while(left       while(rightleft && a[right]x)       {          right--;       }   if(left      a[left]=a[right];   left++;   }   while(left       left++;   }   if(left      a[right]=a[left];   right--;   }      }       a[left]=x;return left;}void quikSort(int a[],int posstart,int posend){     if(posstart        int posmid=partition(a,posstart,posend);            quikSort(a,posstart,posmid-1);        quikSort(a,posmid+1,posend);    }}void print_array(int a[],int n){   int i;   for(i=0;i     printf("%d\t",a[i]);   }   printf("\n");}int main(){  int a[] = {7, 2, 5, 6, 0, 10, 4};   quikSort(a,0,sizeof(a)/sizeof(a[0])-1);  print_array(a,sizeof(a)/sizeof(a[0]));   return 0;}    int i, j, q;i = s;j = u + 1;q = s;while (i if (X[i] Z[q++] = X[i++];}else{    Z[q++] = X[j++];}}    while (i Z[q++] = X[i++];    }while (j Z[q++] = X[j++];}}void mergePass(int X[], int Y[], int n, int t)  {      int i = 0, j;      while( n - i = 2 * t )     //将相邻的两个长度为t的各自有序的子序列合并成一个长度为2t的子序列       {         merge(X, Y, i, i + t - 1, i + 2 * t - 1);          i = i + 2 * t;      }        if( n - i  t )       //若最后剩下的元素个数大于一个子序列的长度t时           merge(X, Y, i, i + t - 1, n - 1);      else             //n-i       int t = 1;      int *Y = (int *)malloc(sizeof(int) * n);     while( t 

上一篇:怎么给服务器上发送文件?

下一篇:电脑怎么做ftp服务器?