直接插入排序算法就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的个数加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)