找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1704|回复: 1

[求助] 相同数组排序结果不一致

3

主题

7

帖子

7

积分

贫民

积分
7
yangyang- 发表于 2018-11-9 11:50:04 | 显示全部楼层 |阅读模式
#!/usr/bin/python
#coding=utf-8


import random


def insert(ls):
    for i in range(len(ls)-1):
        print(i,ls)
        min_=ls
        index=i
        for j in range(i+1,len(ls)):
            if ls[j]<min_:
                min_=ls[j]
                index=j
        ls.insert(i,min_)
        del ls[index+1]
    return ls

a=[5,1,77,34,25,19,29,99,0]
print(insert(a))

直接给出数组排序结果如下:
[yangyang2@localhost test]$ ./sort.sh
(0, [5, 1, 77, 34, 25, 19, 29, 99, 0])
(1, [0, 5, 1, 77, 34, 25, 19, 29, 99])
(2, [0, 1, 5, 77, 34, 25, 19, 29, 99])
(3, [0, 1, 5, 77, 34, 25, 19, 29, 99])
(4, [0, 1, 5, 19, 77, 34, 25, 29, 99])
(5, [0, 1, 5, 19, 25, 77, 34, 29, 99])
(6, [0, 1, 5, 19, 25, 29, 77, 34, 99])
(7, [0, 1, 5, 19, 25, 29, 34, 77, 99])
[0, 1, 5, 19, 25, 29, 34, 77, 99]


#!/usr/bin/python
#coding=utf-8


import random


def insert(ls):
    for i in range(len(ls)-1):
        print(i,ls)
        min_=ls
        index=i
        for j in range(i+1,len(ls)):
            if ls[j]<min_:
                min_=ls[j]
                index=j
        ls.insert(i,min_)
        del ls[index+1]
    return ls

#print('请随意输入一组数字,以逗号分隔开')
#str=raw_input()
#list=str.split(',')

#print(insert(list))


输入一串数字,输入的数字与上面直接给出的数组一样,但是排序结果不对,结果如下:
[yangyang2@localhost test]$ ./sort.sh
请随意输入一组数字,以逗号分隔开
5,1,77,34,25,19,29,99,0
(0, ['5', '1', '77', '34', '25', '19', '29', '99', '0'])
(1, ['0', '5', '1', '77', '34', '25', '19', '29', '99'])
(2, ['0', '1', '5', '77', '34', '25', '19', '29', '99'])
(3, ['0', '1', '19', '5', '77', '34', '25', '29', '99'])
(4, ['0', '1', '19', '25', '5', '77', '34', '29', '99'])
(5, ['0', '1', '19', '25', '29', '5', '77', '34', '99'])
(6, ['0', '1', '19', '25', '29', '34', '5', '77', '99'])
(7, ['0', '1', '19', '25', '29', '34', '5', '77', '99'])

['0', '1', '19', '25', '29', '34', '5', '77', '99']

求大神分析是为啥?



回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
33号鹰 发表于 2018-11-10 14:24:28 | 显示全部楼层
结果不一样的原因:一个数字排序;一个字符数字排序;
建议:
(1)经典的排序有很多,如冒泡排序,选择排序,快速排序等,自己写的代码可能会出错.
(2)上述代码有问题,程序调试时通不过.自定义函数的第4句应改为: min_=ls[i]
(3)自定义函数名建议改为更友好的,如:myInsertSort等
相互帮助,一起学习.   
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表