怎么对一个字符串进行排序,这个字符串中只有26个字母

VCGuru2003 2003-10-16 11:29:28
望高手提供一个对26个字母进行排序的函数
...全文
171 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
workhand 2003-10-16
  • 打赏
  • 举报
回复
起泡轻松搞定,判断时用>,不用>=就可以实现'BB'的情况了
pengdesheng 2003-10-16
  • 打赏
  • 举报
回复
lds_wqjk.dataobject = as_sort 改为 lds_wqjk.dataobject = 'd_sort'
pengdesheng 2003-10-16
  • 打赏
  • 举报
回复
最简单的办法是,
建个外部数据源d_sort,
d_sort中有一s_s字段
string uf_sort(string as_sort)
datastore lds_wqjk
string ls_temp
int li_row
lds_wqjk = create datastore
lds_wqjk.dataobject = as_sort
for li_i = 1 to len(as_sort)
li_row = lds_wqjk.insertrow(0)
lds_wqjk.setitem(li_row,'s_s',mid(as_sort,li_i,1))
next
lds_wqjk.setsort('s_s a')
for li_i = 1 to lds_wqjk.Rowcount()
ls_temp = ls_temp + lds_wqjk.getitemstring(li_i,'s_s')
next
destroy lds_wqjk
return ls_temp

///呵呵,,,让数据窗口帮你排啊,,,
pbsql 2003-10-16
  • 打赏
  • 举报
回复
起泡法,循环比较前后两字符大小,若后者小则互换,
klbt 2003-10-16
  • 打赏
  • 举报
回复
最简单的方式是用冒泡法,因为“字符串中只有26个字母”,所以效率不是问题
VCGuru2003 2003-10-16
  • 打赏
  • 举报
回复
to jerrymao:
是的
wantsong 2003-10-16
  • 打赏
  • 举报
回复
用数组将字符取出
起泡法,排列规则为asc码的值和 jerrymao(加菲猫) 提出的建议

纳米茶 2003-10-16
  • 打赏
  • 举报
回复
如果碰到了两个或多个字符相同的情况如何排序?
如:‘BAADDT’
排成:‘AABDDT’么?
VCGuru2003 2003-10-16
  • 打赏
  • 举报
回复
比如说我的字符串是"BADT",我要把这个字串符排序成"ABDT"
纳米茶 2003-10-16
  • 打赏
  • 举报
回复
说明确点
chrisfy 2003-10-16
  • 打赏
  • 举报
回复
学习
flyhot 2003-10-16
  • 打赏
  • 举报
回复
学习
VCGuru2003 2003-10-16
  • 打赏
  • 举报
回复
没人知道嘛
VCGuru2003 2003-10-16
  • 打赏
  • 举报
回复
up
incats 2003-10-16
  • 打赏
  • 举报
回复
string s, s1
long i
string sortvalue[26]
s = "aabcfacedadfklpksdfa"

for i = 1 to len(s)
sortvalue[asc(mid(s, i, 1)) - asc("a") + 1] += mid(s, i, 1)
next

for i = 1 to 26
s1 += sortvalue[i]
next

messagebox(s, s1)
eminena 2003-10-16
  • 打赏
  • 举报
回复
string ls_y,ls_m ,ls_k //ls_y是给定的字符串, ls_m 是排序后的字符串(开始时赋空值),ls_k 是临时记录的,开始时 ls_k=ls_y
用循环 :
for i = 65 to 90 //(大写字符(A-Z))
..........

end for

循环体内:
1. 用 CHAR(I) 产生字符 A-Z
2. 用函数 POS() 判断 CHAR(I) 在字符串 ls_k 中的位置
3. 产生 ls_m (ls_m=ls_m+CHAR(I)),并用 replace() 函数在 ls_k 中删除字符 CHAR(I)
4. 直至 POS(CHAR(I)) 为 0,开始取下一个 I
5. 当 len(ls_k) 为 0 时 退出循环
6. 循环结束
7. ls_m 即为所求
longdrang 2003-10-16
  • 打赏
  • 举报
回复
起泡轻
qqjj7758 2003-10-16
  • 打赏
  • 举报
回复
上面的我去掉了 o和 i 因为要和 0和1区别开来
qqjj7758 2003-10-16
  • 打赏
  • 举报
回复
用char() 和asc()
将字母转换成数字 进行排序
int n
char ch, temp[36]

for n = 1 to len(code)
ch = mid(code, n, 1)
if isnumber(ch) then
if ch = "0" then
temp[36] = ch
else
temp[asc(ch) - 22] = ch
end if
else
temp[asc(ch) - 64] = ch
end if
next

code = ""

for n = 1 to 36
code = code + temp[n]
next

return code

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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