插入排序_希尔排序快速排序_冒泡排序_c算法.docVIP

  • 9
  • 0
  • 约1.03万字
  • 约 16页
  • 2016-09-01 发布于贵州
  • 举报

插入排序_希尔排序快速排序_冒泡排序_c算法.doc

插入排序_希尔排序快速排序_冒泡排序_c算法

//排序 #include stdio.h int partions(int l[],int low,int high) { int prvotkey=l[low]; l[0]=l[low]; while (lowhigh) { while (lowhighl[high]=prvotkey) --high; l[low]=l[high]; while (lowhighl[low]=prvotkey) ++low; l[high]=l[low]; } l[low]=l[0]; return low; } void qsort(int l[],int low,int high) { int prvotloc; if(lowhigh) { prvotloc=partions(l,low,high); //将第一次排序的结果作为枢轴 qsort(l,low,prvotloc-1); //递归调用排序 由low 到prvotloc-1 qsort(l,prvotloc+1,high); //递归调用排序 由 prvotloc+1到 high } } void quicksort(int l[],int n) { qsort(l,1,n); //第一个作为枢轴 ,从第一个排到第n个 } void main() { int a[11]={0,2,32,43,23,45,36,57,14,27,39}; for (int b=1;b11;b++) printf(%3d,a[b]); printf(\n); quicksort(a,11); for(int c=1;c11;c++) printf(%3d,a[c]); } 一、主界面 void main() { const int numv=12; int [3][numv]={{0,6,13,19,23,37,39,41,45,48,58,86},{0,86,58,48,45,41,39,37,23,19,13,6},{0,23,13,48,86,19,6,41,58,37,45,39}}; int z1[numv],z2[numv]; int m,n,i,j,k; printf(\t\t*******************************************\n); printf(\t\t\t\t 排 序\n); printf(\t\t*******************************************\n); printf(\t\t\t请选择测试数据类型:1正序 \n ); printf(\t\t\t请选择测试数据类型:2逆序\n ); printf(\t\t\t请选择测试数据类型:3随机\n ); printf(\t\t\t返回,请按4\n ); printf(\t\t*******************************************\n); scanf(%d,m); while(m0 m4) { system(cls); printf(\t\t*******************************************\n); printf(\t\t\t\t 排序方法选择\n); printf(\t\t*******************************************\n); printf(\t\t\t请选择排序算法:1直接插入排序 \n); printf(\t\t\t请选择排序算法:2希尔排序 \n); printf(\t\t\t请选择排序算法:3冒泡排序 \n); printf(\t\t\t请选择排序算法:4快速排序\n); printf(\t\t\t请选择排序算法:5简单选择排序\n); scanf(%d,n); switch(n) { case 1: printf( 直接插入排序前:\n); for( j=1;jnumv;j++) printf(%d ,a[m-1][j]); printf( \n直接插入排序结果为:\n); BiInsertsort(a[m-1],numv-1); break; case 2: printf( \n希尔排序前:\n); for( j=1;jnumv;j++)

文档评论(0)

1亿VIP精品文档

相关文档