直接插入排序(python)

来源:互联网 发布:centos 安装samba 编辑:程序博客网 时间:2024/05/16 12:55
直接插入排序算法就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的个数加1的有序数据
# -*- coding: utf-8 -*-"""Created on Wed Jul  5 08:00:32 2017"""s=[]cnt=0def data_in_func(s,cnt):    print('请输入数据:')    while True:        flag=input('是否输入数据,n不输入,其他输入:')        if flag=='n':            return s,cnt        data=input('input a number:')        if data.isdigit():            data=int(data)            s.append(data)            cnt+=1        else:            print('数据错误请重新输入!!!!!!!!!!')            '''            def insort(s,cnt):    #说明  算法书上的(c语言的),实现直接插入排序,也修改了一点        #25 12 36 9        #25 12 36 9 12  j=0        #25 25 36 9 12 j=-1退出循环        #j+1=0  s[0]=s[cnt]  12 25 36 9 12    flag_sort=0    for i in range(1,cnt):        if flag_sort==0:            s.append(s[i])            flag_sort=1        else:            s[cnt]=s[i]        j=i-1        while(s[cnt]>s[j]):            s[j+1]=s[j]            j-=1            if j<0:                break        s[j+1]=s[cnt]    return s'''def insort(s,cnt):    #说明  根据python语法进行修改的    for i in range(1,cnt):        '''        if flag_sort==0:            s.append(s[i])            flag_sort=1        else:            s[cnt]=s[i]        '''        j=i-1        while(s[j+1]<s[j]):            s[j+1],s[j]=s[j],s[j+1]            j-=1            if j<0:                break    return ss,cnt=data_in_func(s,cnt)print(s,cnt)s=insort(s,cnt)print('new=',s)