不使用循环对10个数排序
好像这是一道华为的面试题,小弟思考良久也找不到好的方法,只知道用递归,但具体怎么做,还得请教各路大哥了。。
[解决办法]
- C/C++ code
#include <stdio.h>#define NUM 5int i=0,j;int Arr[NUM];void sortfunc(void){ int tmp; i++; if(Arr[i]<Arr[i-1]) { tmp=Arr[i]; Arr[i]=Arr[i-1]; Arr[i-1]=tmp; } if(i<j) sortfunc(); else { i=0;j--; if(j==0)return; sortfunc(); } }int main(int argc,char *argv[]){ j=NUM; printf("请输入一个长%d的数组:\n",j); for (i=0;i<NUM;i++)scanf("%d",&Arr[i]); printf("排序前:\n"); for(i=0;i<j;i++)printf("%d ",Arr[i]); printf("\n"); sortfunc(); printf("排序后:\n"); j=NUM; for(i=0;i<j;i++)printf("%d ",Arr[i]); printf("\n"); }