数字排序问题

Ealisman 2009-05-11 03:45:01
我做了个数字排序,但msgbox显示的不对!请帮我指正!谢谢!
string ls_text,ls_temp
Long i,j,ll_len,ll_temp
Decimal ldc_result

ls_text = Trim(sle_1.text)
ll_len = Len(ls_text)
For i = 1 To ll_len
ls_temp = Mid(ls_text,i,1)
Next
For i =1 To ll_len
for i = j To ll_len
ldc_result = max(i,j)
ll_temp = ll_temp +ldc_result
Next
Next
MessageBox('',ll_temp)
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2009-05-11
  • 打赏
  • 举报
回复
假如 j+1表示从 i往后找
每次j循环完就从i到ll_len
里面找出最大的一个
Ealisman 2009-05-11
  • 打赏
  • 举报
回复
再问下: For i =1 To ll_len
For j = i+1 To ll_len

j=i+1 这个是什么意思?
永生天地 2009-05-11
  • 打赏
  • 举报
回复
1、是
2、把数大的放在前面
3、把排序好的连起来
[Quote=引用 6 楼 Ealisman 的回复:]
我试了一下!可以的!
谢谢大侠!
不过有几个请解释下!谢谢!
1.ll_temp[i] = long(Mid(ls_text,i,1) ) // 这是定位放到数组里面吗?
2.
ll_temp[i] =ll_temp[j] // 这部是做什么的?为什么要这样写?不明白!

3.For i = 1 To ll_len
ls_temp=string(ll_temp[i] )
Next
这个循环的意思是:挨个把比较后较大的数字放入到数组中 吗?
[/Quote]
newease 2009-05-11
  • 打赏
  • 举报
回复
不用数组也可以实现代码如下
string ls_text,ls_temp ,ll_temp,l_max
Long i,j,ll_len
Decimal ldc_result

ls_text = Trim(sle_1.text)
DO while Len(ls_text) > 1
ll_len = Len(ls_text)
l_max=Mid(ls_text,i,1)
for i=1 to ll_len
ll_temp=Mid(ls_text,i,1)
if ll_temp>=l_max then
l_max=ll_temp
end if
next
ls_temp=ls_temp +l_max
j=pos(ls_text,l_max)
ls_text=Replace (ls_text ,j,1, '' )

LOOP
ls_temp=ls_temp +ls_text

MessageBox('',ls_temp)
Ealisman 2009-05-11
  • 打赏
  • 举报
回复
我试了一下!可以的!
谢谢大侠!
不过有几个请解释下!谢谢!
1.ll_temp[i] = long(Mid(ls_text,i,1) ) // 这是定位放到数组里面吗?
2.
ll_temp[i] =ll_temp[j] // 这部是做什么的?为什么要这样写?不明白!

3.For i = 1 To ll_len
ls_temp=string(ll_temp[i] )
Next
这个循环的意思是:挨个把比较后较大的数字放入到数组中 吗?
永生天地 2009-05-11
  • 打赏
  • 举报
回复
简单改造,不知道合不合楼主意思
string ls_text,ls_temp
Long i,j,ll_len,ll_temp[]
Decimal ldc_result

ls_text = Trim(sle_1.text)
ll_len = Len(ls_text)
For i = 1 To ll_len
ll_temp[i] = long(Mid(ls_text,i,1) )
Next
For i =1 To ll_len
for j = i+1 To ll_len
if ll_temp[i]<ll_temp[j] then
ldc_result = ll_temp[i]
ll_temp[i] =ll_temp[j]
ll_temp[j] =ldc_result
end if
Next
Next
For i = 1 To ll_len
ls_temp+=string(ll_temp[i] )
Next

MessageBox('',ls_temp)
Ealisman 2009-05-11
  • 打赏
  • 举报
回复
那麻烦你写份给我看看吧!
谢谢!
永生天地 2009-05-11
  • 打赏
  • 举报
回复
没看懂,逻辑有点乱
Ealisman 2009-05-11
  • 打赏
  • 举报
回复
请问这有什么问题呢?我真的不明白!请明示,大侠!
这个意思是:比较i和j这2个数,结果返回大的那个!
newease 2009-05-11
  • 打赏
  • 举报
回复
这里有问题max(i,j)

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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