看看我的排序,这叫什么排序啊?大虾们

busanbusi 2004-04-07 06:00:43
sub sort(arr(),length)
dim i,j,k
for i=0 to length
for j=0 to length
if arr(i)<arr(j) then
k=arr(i)
arr(i)=arr(j)
arr(j)=k
end if
next
next
end sub
这个是什么排序啊?每次都把最大的排到第i位
还有这个排序是什么原理啊?
...全文
30 点赞 收藏 15
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
WYlslrt 2004-04-10
有歧异,把第二个循环稍改一下,可以变成好几中
回复
aaalife 2004-04-10
我觉得是冒泡啊

就是依次选出最大值嘛
然后把它尽量往前放啊
回复
busanbusi 2004-04-09
xxwo(老K) 没错呀
假设序列是 3,2,1。
循环一共执行两趟:
第一趟:2,3,1
第二趟:1,3,2
第三趟 1,2,3
for j=0 to i-1
if arr(i)<arr(j) then
k=arr(i)
arr(i)=arr(j)
arr(j)=k
end if
你看看这个吧
回复
busanbusi 2004-04-08
我现在认为是插入排序的变种
,每次都让前i为有序。这个效率的确不高,如果改一下
sub sort(arr(),length)
dim i,j,k
for i=1 to length
for j=0 to i-1
if arr(i)<arr(j) then
k=arr(i)
arr(i)=arr(j)
arr(j)=k
end if
next
next
end sub

这样就是正宗的插入排序了
回复
mmmcd 2004-04-08
根据循环来看,

第0位放最大值;
第1位放最大值;
...
第length位放最大值;

原始:3 1 4 2 5
i=0: 5 1 3 2 4
i=1: 1 5 3 2 4
i=2: 1 3 5 2 4
i=3: 1 2 3 5 4
i=4: 1 2 3 4 5
回复
shi_jiantao 2004-04-08
选择排序
回复
xxwo 2004-04-08
楼上的: busanbusi(不三不四) 算法不对,假设序列是 3,2,1。
循环一共执行两趟:
第一趟:2,3,1
第二趟:1,3,2

结果错
回复
privet 2004-04-07
偶认为是选择排序,每次把i以后最大数的放到i+1位置,
不过该排序做了许多无用功
回复
NowCan 2004-04-07
错到算不上,但不是正规的冒泡法。
回复
Riemann 2004-04-07
偶也认为这是一个写错了的冒泡程序。"for j=0 to length"改为"for j=i to length"就行了。
回复
寻开心 2004-04-07
就是冒泡

i循环每次把最大的换到顶上

说是错误是因为写法格式是两不象,不是代码不能得到正确结果

如果arr是定长数组, 那么i和j起止范围不是最优的,效率低了

如果arr是变长数组,可以按照递归方式理解,可是少了递归调用的代码
回复
stephen85 2004-04-07
是冒泡,每次都把大的尽量向前移,最后得出降序排列。
回复
busanbusi 2004-04-07
不是冒泡呀,也没写错,能排出来
冒泡可不是这样的
回复
jingfeng198 2004-04-07
冒泡
回复
寻开心 2004-04-07

看起来是一个 写错了的 递归方式实现的 冒泡排序
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告