很难的编程题,求高手帮忙重分感谢

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:51:10
实验一:设计和实现一个算法,它尽可能慢地对n个整数的数组做排序。你的算法必须合乎情理,也就是说:算法必须不断前进并能最终结束,实现中不能有欺诈,如浪费时间的循环等。算法的复杂性(作为n的函数)是什么?或
实验二:写一个递归的和一个非递归的reverse,它们能把一个表翻转过来。操作中不要建立新的表项,只用已经有的项。
大哥们,小弟要的就是代码啊 !!!

第一个就不说了你们应该学过,直接给你第二个递归的吧!
int sort(int i,int count) {//其中count是表示数组的个数
int num;
if(i == count) {
return i;
} else {
num = sort(++i,count);
int temp = i -1;
swap(temp, i);//是表示数组中的这两个下标的数值调换
return temp;
}
}
在主函数中在调用这个
for(int k = 0; k < count; k++) {
sort(k);
}

“尽可能慢”?真神奇!

尽可能慢?还有人提这种要求,太无语了。
我想了一个超慢的算法。先对这n个整数求全排列(即这n个数所有可能的排列顺序),待把所有情况求完后,再对每种情况逐个检验,看他是否符合要求的顺序。简单说一下求全排列的思路(程序比较麻烦,不写了):先从n个数中抽出一个数,作为第一个数,再递归调用函数,对剩下的n-1个数排列,直至n=1。