免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1981 | 回复: 5
打印 上一主题 下一主题

排序题,不准用库函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-30 13:41 |只看该作者 |倒序浏览
对字符串进行排序,用任意一种编程语言来实现,不能使用现有的类,在排序中,字符串“Bc”,“Ad”,“aC”,“Hello”,“X man”,“little”,“During”,“day”能够排序成 “Ad”,"aC",“Bc”,“During”,“day”,“Hello”,“little”,“Hello”,也就是说,在排序的过程并不是传统的按照字符串排序,在排序中还需要将小写字母一并排序,也就是说a字符串要在B或b之前

论坛徽章:
0
2 [报告]
发表于 2009-03-30 14:22 |只看该作者
str=%w{Bc Ad aC Hello XMan little Durring day}
def sort(list)

return list.sort.sort do |a,b|
&nbsp;&nbsp;&nbsp;&nbsp;a[0].chr.downcase <=> b[0].chr.downcase
end
end



&nbsp;p sort(str)




["Ad", "aC", "Bc", "Durring", "day", "Hello", "little", "XMan"]

论坛徽章:
0
3 [报告]
发表于 2009-03-30 14:34 |只看该作者
str=%w{Bc Ad aC Hello XMan little Durring day}

def bubble_sort(arr)
&nbsp;&nbsp;&nbsp;1.upto(arr.length-1) do |i|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(arr.length-i).times do |j|
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if arr[j][0].chr.downcase > arr[j+1][0].chr.downcase
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j],arr[j+1] = arr[j+1],arr[j]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr
&nbsp;end



&nbsp;p bubble_sort(str)

论坛徽章:
0
4 [报告]
发表于 2009-03-30 20:53 |只看该作者
def compare(a,b):
    if a==b:
        return 0
    for i in range(min(len(a),len(b))):
        if a==b:
            continue
        elif a.lower()>b.lower():
            return 1
        elif a.lower() < b.lower():
            return -1
        else:
            return 1 if a>b else -1
    return 1 if len(a)>len(b) else -1
def main():
    lst=["Bc","Ad","aC","Hello","X man","little","During","day"]
    print sorted(lst,compare)
if __name__ == '__main__':
    main()

论坛徽章:
0
5 [报告]
发表于 2009-03-30 20:59 |只看该作者
def compare(a,b):
    if a==b:
        return 0
    for i in range(min(len(a),len(b))):
        if a[i]==b[i]:
            continue
        elif a[i].lower()>b[i].lower():
            return 1
        elif a[i].lower() < b[i].lower():
            return -1
        else:
            return 1 if a[i]>b[i] else -1
    return 1 if len(a)>len(b) else -1
def main():
    lst=["Bc","Ad","aC","Hello","X man","little","During","day"]
    print sorted(lst,compare)
if __name__ == '__main__':
    main()
Result:['Ad', 'aC', 'Bc', 'During', 'day', 'Hello', 'little', 'X man']
初学Python O(∩_∩)O哈哈~

论坛徽章:
0
6 [报告]
发表于 2009-03-31 09:52 |只看该作者

回复 #5 千年沉寂 的帖子

不错,python理解的很到位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP