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

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位
还有这个排序是什么原理啊?
...全文
53 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复

看起来是一个 写错了的 递归方式实现的 冒泡排序

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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