关于数组排序

xumin111050 2014-04-24 08:25:51
我在进行选择排序和冒泡排序的性能比较时,用了同一个数组。先选择排序,然后恢复原来状态,再冒泡排序,但冒泡排序出现了问题

for (int i=0;i<N;i++)
{
ab[i]=N-i;
}
bg = clock(); //获取排序后时间
cout<<bg<<endl;
Sort_Sct(ab,size); //选择排序
ov = clock(); //获取排序后时间
cout<<ov<<endl;
timecost(bg,ov);//计算排序时间

for (int i=0;i<N;i++)
{
ab[i]=N-i;
}
bg = clock(); //获取排序后时间
cout<<bg<<endl;
Sort_Bub(ab,N); //冒泡排序
ov = clock(); //获取排序后时间
cout<<ov<<endl;
timecost(bg,ov);//计算排序时间

运行的结果是

当我分别用两个相同的数组进行排序时,结果却又是正常的?
...全文
169 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xumin111050 2014-05-06
  • 打赏
  • 举报
回复
////template <typename T> void Sort_Sct(T [],int); //函数模板,可以实现不同类型数组的排序操作 //// //选择排序 ////template <typename T> void Sort_Bub(T [],int); //// //冒泡排序 ////void timecost(int,int); //计算时间花 ////template <typename T> void Sort_Sct(T a[],int size) //选择排序算法 ////{ //// T temp; //// for (int i=0;i<size-1;i++) //// { //// temp = a[i]; //每次拿未排好的第一个数跟后面的所有数进行比较 //// for (int j=i+1;j<size;j++) //// { //// if (temp>a[j]) //// swap(a[j],temp); //进行交换 //// } //// a[i] = temp; //把这一次找到的最小数存储 //// } //// cout<<"Select Sorted!"<<endl; //// for (int i=0;i<size;i++) //排序后输出 //// { //// cout<<a[i]<<'\t'; //// } ////} //// ////template <typename T> void Sort_Bub(T a[],int size) ////{ //// int work; //// for (int i=0;i<size-1;i++) //// { //// work = 0; //// for (int j=0;j<size-1-i;j--) //// { //// if (a[j]>a[j+1]) //// { //// swap(a[j],a[j+1]); //// work = 1; //本次查寻顺序调整,说明排序未完成 //// } //// if (!work) //// break; //// } //// } //// cout<<"Bubble Sorted!"<<endl; //// for (int i=0;i<size;i++) //// { //// cout<<a[i]<<'\t'; //// } ////} @caozhy 希望你能找出问题来
让菜鸟飞 2014-04-26
  • 打赏
  • 举报
回复
一般都是在排序过程中边界处理有问题
threenewbee 2014-04-25
  • 打赏
  • 举报
回复
代码不全,没有Sort_Bub Sort_Sct的实现,天知道什么问题。
相关推荐
发帖
智能路由器

672

社区成员

智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
帖子事件
创建了帖子
2014-04-24 08:25
社区公告
暂无公告