搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求大神告知运行原理
标题:
求大神告知运行原理
只看楼主
牧城雪
等 级:
新手上路
帖 子:33
专家分:9
注 册:2017-11-6
结帖率:
66.67%
楼主
已结贴
√
问题点数:20 回复次数:7
求大神告知运行原理
求这个进行升序排列的原理
搜索更多相关主题的帖子:
运行
原理
升序
排列
2017-11-16 16:11
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
2
楼
得分:20
看不到代码
2017-11-16 16:16
牧城雪
等 级:
新手上路
帖 子:33
专家分:9
注 册:2017-11-6
第
3
楼
得分:0
回复 2楼 吹水佬
#include<stdio.h>
main()
{
int a[10]={23,24,26,21,20,10,7,8,5,4},i,j,K,t;
for(i=0;i<9;i++)
{
K=i;
for(j=i+1;j<10;j++)
if(a[j]<a[K])
{
K=j;
}
if(K!=i)
{
t=a[i];
a[i]=a[K];
a[K]=t;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
2017-11-16 16:25
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
4
楼
得分:0
这个也算是冒泡排序,只是比对时记录最小值元素的下标。
2017-11-16 16:32
牧城雪
等 级:
新手上路
帖 子:33
专家分:9
注 册:2017-11-6
第
5
楼
得分:0
回复 4楼 吹水佬
为什么是if(K!=i)
2017-11-16 16:52
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
6
楼
得分:0
以下是引用
牧城雪
在2017-11-16 16:52:48的发言:
为什么是if(K!=i)
K!=i就是K有变动,即有更小的元素。
2017-11-16 17:38
如此美好
等 级:
新手上路
帖 子:7
专家分:0
注 册:2017-11-17
第
7
楼
得分:0
把第二个if里面的内容取代第一个if里面的就行啊,何必那么麻烦。
2018-01-12 18:52
九转星河
来 自:长长久久
等 级:
贵宾
威 望:
52
帖 子:5023
专家分:14003
注 册:2016-10-22
第
8
楼
得分:0
这个其实是选择排序
if (K!=j)
这个有没有必要个人保留意见~
加了的话每次交换前都要多一次判断,只有当K==j的时候能省点时间~
但不加的话当K==j时就要多花点时间了~
通常来说数组规模越大K==j的可能性越小~
如果数组规模不大的话或者多少可以优化一点的~
不过如果数组规模不大那就意味着不缺执行时间啊,一般情况下谁会在乎0.0001s和0.0002s到底哪个快点呢,而且执行时间不够长的话相对于外部偶然因素影响就大了,所以斟酌这么一点点优化甚至得不偿失,这就见笑了~
当然,总体上来说感觉这个优化作用不是很大~不过看见教材上很多这样写,那就显得很有趣了
~
[此贴子已经被作者于2018-1-12 23:27编辑过]
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-01-12 23:26
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-482544-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.247960 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved