python实现的希尔排序算法
只能实现小于等于10个数的排序
# -*- coding: utf-8 -*-
"""
Created on Fri Jul 7 09:39:41 2017
@author: wzqya
"""
data_list=[]
num_cnt=0
def data_in_func(data_list,num_cnt):
print('please enter a lot of numbers!!!!!')
while 1:
flag=input('enter a letter judgeing whether break,enter n break,else continue!')
if flag=='n':
return data_list,num_cnt
data=input('enter number:')
if data.isdigit():
data=int(data)
data_list.append(data)
num_cnt+=1
def shell_sort(k):
#k为增量,即是每一组的大小
while k>0:
for i in range(k,num_cnt):
j=i-k
if j>=0:
if data_list[j]>=data_list[j+k]:
data_list[j],data_list[j+k]=data_list[j+k],data_list[j]
print(data_list)
k=k//2#整除
data_list,num_cnt=data_in_func(data_list,num_cnt)
print(data_list,num_cnt)
shell_sort(5)
print(data_list,num_cnt)