看看某一语句的作用。

zfs565656 2012-03-14 10:06:36
#include "iostream.h"
#include "iomanip.h"
void sort(int a[], int size); // 将数组中的元素从大到小排列
int main()
{
int num[]={2,3,8,6,4,1,7,9};
const int size= sizeof (num)/ sizeof (int);
sort(num,size);
cout <<"排列后的数组元素" <<endl;
for ( int i=0;i<size;i++) // 输出排列好以后的数组元素
{
cout <<setw(2) <<num[i];
}
cout <<endl;
return 0;
}
void sort(int a[], int size)
{
cout <<"原来的数组元素" <<endl;
for ( int i=0;i<size;i++) // 输出原来的数组元素
{
cout <<setw(2) <<a[i];
}
cout <<endl;
for ( int j=0;j<size;j++)
{
int min=a[j],mink=j;/ /*先假设未排序的首元素是最小的数------注释都是其它阅读者读后留下的,非原书所有。*/
for ( int k=j;k<size;k++) // 找到尚未排序的元素中最小的数
{
if (a[k]<min)
{
min=a[k];
mink=k;
}
}
int temp=a[j]; // 交换两个元素
a[j]=a[mink];
a[mink]=temp;
}
}

自己下面写的没加这个转换int min=a[j],mink=j;编译也没问题,
void hs(int tt[],int size)
{
for(int f=0;f<size;f++)
{cout<<tt[f]<<endl;}
for(int i=0;i<size;i++)
{
for(int o=i;o<size;o++)
if(tt[i]>tt[o])
{ int tmpe=tt[i];
tt[i]=tt[o];
tt[o]=tmpe;}
}
} //虽好似自己的更简略,但教材的那一句起到了什么作用啊?教材应该不会加可有可无的语句吧?
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfs565656 2012-03-14
  • 打赏
  • 举报
回复
如果只是对交换的优化,那么起作用的也只有mink=j;吧?是否int min=a[j]完全无用呢?
merlinfang 2012-03-14
  • 打赏
  • 举报
回复
你这样写if(tt[i]>tt[o])可能会交换很多次,而他是先找出最小元素下标,然后再交换,交换次数变少了
quwei197874 2012-03-14
  • 打赏
  • 举报
回复
国内教材也没什么权威的,自己做的对就好。不过这个选择排序两种写法都太麻烦。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧