分类：电脑/网络-软件
问题：C语言题目11.写三个函数排序函数，分别采用冒泡法、选择法、插入 
1.写三个函数排序函数，分别采用冒泡法、选择法、插入法实现数据的排序，输入参数为数组，形式如下：   void sort1(int d[]);   void sort2(int d[]);   void sort3(int d[]);在主函数main中，从输入20个数，之后根据输入的一个字符来选择使用相应的排序函数进行处理，要求如下：输入’B’或者’b’采用冒泡法排序；输入’S’或者’s’采用选择法排序；输入’I’或者’i’采用插入法排序。最后将排序的结果输出。
回答：#define s(a,b){int t=a;a=b;b=t;}#define compswap(a,b){if(b<a) swap(a,b);}void bubble(int a[],int left,int right)/*Ã°ÅÝÅÅÐò*/{ int i,j; for(i=left+1;i<=right;i++) for(j=right;j>=i;i--){ compswap(a[j-left],a[j]);}}int mini(int a[],int i,int r){ int j,min=i;for(j=i+1;j<=r;j++){if(a[j]<a[min]) min=j;}return min;}void selection(int a[],int l,int r)/*Ñ¡ÔñÅÅÐò*/{ int i;for(i=l;i<r;i++){int j=mini(a,i,r);swap(a[i],a[j]);}}void insert(int a[],int left,int i){ int v=a[i]; while(i>left&&(v<a[i-left])){a[i]=a[i-left];i--;}a[i]=v;}void insertion(int a[],int left,int right)/*²åÈëÅÅÐò*/{ int i;for(i=left+1;i<right;i++) insert(a,left,i);}main(){  int a[10]={4,5,654,45,874,20,10,8,7,900};  int i;  char m;  printf("intput b or B is bubble\n");  printf("intput s or S is selection\n");  printf("intput i or I is insertion\n");  scanf("%c", &m);  switch(m){  case 'b'|'B':  for(i=0;i<9;i++)  {  bubble(a[i],0,0);  printf("%d\t",a[i]);  }  getch(); break;  case 'S'|'s':  for(i=0;i<9;i++)  {  selection(a[i],0,0);  printf("%d\t",a[i]);  }  getch(); break;  case 'i'|'I':  for(i=0;i<9;i++)  {  insertion(a[i],0,0);  printf("%d\t",a[i]);  }  getch(); break;}}差不多是这个样子的 我没运行过，出现错误别怪我哦，如果有什么疑问可以 Q 63216358， 希望多交流些学习的东西