要求:
使用任何编程语言(java,c/c++,python,perl,etc),并且只能用一个长度为10的array/list对1000个数字排序。你能使用一些局部/临时变量,但不再是collection/list/array结构的。 实现情况:
工程能生成1000个随机数字,并打印结果和总共比较的次数。目标要求是比较次数最少。
使用任何编程语言(java,c/c++,python,perl,etc),并且只能用一个长度为10的array/list对1000个数字排序。你能使用一些局部/临时变量,但不再是collection/list/array结构的。 实现情况:
工程能生成1000个随机数字,并打印结果和总共比较的次数。目标要求是比较次数最少。
解决方案 »
- IShellLink 接口问题
- IE连接网络的时候的SOCKET是什么类型的(阻塞?非阻塞?。。。)
- 请问如何做才能像这样调用类中的函数,#include "math.h", 直接写sin(),cos(),而不用写类名或者声明一个类变量?
- CWMPPlayer4问题
- 用MDI子视图访问数据库
- 请教回调函数的作用??
- 在 oledb 中怎麼樣才能把 MSsql 類型綁定正確 ? 按書上的做類型綁定得不到正確數據,請大家幫幫忙指點指點,謝謝!!!
- 望有SDK for Win98/95的兄弟能提供两个文件,不胜感激
- 如何运行其他exe程序,请大家...
- 把项目的资源做成dll档后,本地资源为什么不能删除?
- 如何给CGrid Ctrl控件添加打印预览功能?
- socket 封包传输结构体
template <class record,class compare>
class straightinsertsorter:public sorter<record, compare> //直接插入排序类
{ public:
void sort(record array[],int n)
{
int m=0, c=0;
for(int i=1;i<n;i++)
{
for(int j=i;j>0;j--)//依次与前面的纪录比较
{
c++;
if(compare::it(array[j],array[j-1])) //array[j]<array[j-1]时为真
{
swap(array,j,j-1); //交换array[j],array[j-1]
m+=3;
}
else break;
}
}
cout<<"比较次数为:"<<c<<endl;
cout<<"移动次数为:"<<m<<endl;
}
};
长度为10的随机数组为:1 7 4 0 9 4 8 8 2 4 //原来的数组
快速排序:
比较次数为:47
移动次数为:73
0 1 2 4 4 4 7 8 8 9 //排序后的结果
直接插入排序:
比较次数为:26
移动次数为:54
0 1 2 4 4 4 7 8 8 9 //排序后的结果
直接选择排序:
比较次数为:45
移动次数为:27
0 1 2 4 4 4 7 8 8 9 //排序后的结果
shell选择排序:
比较次数为:45
移动次数为:27
0 1 2 4 4 4 7 8 8 9 //排序后的结果
堆排序:
比较次数为:45
移动次数为:27
0 1 2 4 4 4 7 8 8 9 //排序后的结果
冒泡排序:
比较次数为:45
移动次数为:54
0 1 2 4 4 4 7 8 8 9 //排序后的结果
Press any key to continue