直接插入排序(python)

直接插入排序算法就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的个数加1的有序数据


# -*- coding: utf-8 -*-
"""
Created on Wed Jul  5 08:00:32 2017


"""
s=[]
cnt=0

def 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 s

s,cnt=data_in_func(s,cnt)
print(s,cnt)
s=insort(s,cnt)
print('new=',s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值