您的位置:首页 > 编程语言 > Python开发

python实现排序算法(一)——插入排序算法

2017-11-21 16:12 561 查看
'''
插入排序算法
原始数据data
排序数据后数据SortedData,默认是从小打大排序

1.从data第一个元素开始,该元素赋值给SortedData[0],可以认为SortedData已经被排序

2.取出data的一个元素data[i],
(1)从左到右扫描SortedData,
如果data[i]小于SortedData的某个元素SD,那么将data[i]插入SD的位置,选取下一个元素
(1)如果data[i]大于SortedData最后一个元素,将data[1]插入到SortedData的末尾,选取下一个元素

3.重复步骤2
'''

#/usr/bin/env python
#coding:utf-8
#__author__= “livermorium116”

import random
import time
class InsertionSorted():
def __init__(self):
self.data=self.dataRand()

self.SortedData=[self.data[0]]#默认获得第1个元素,
print('排序前:')
print('__________________')
self.SortedByInsertion()

def SortedByInsertion(self):
TimeCount=time.time() ##程序计时
TimeCountCPU=time.clock()##CPU计时

for D in self.data[1:]: ##从余下的元素选取
for SD in self.SortedData: ##选取已排序元素中的一个SD
if D < SD:
tem=self.SortedData.index(SD)
self.SortedData.insert(tem,D)
print(self.SortedData)
break
选取下一元素

if D >= self.SortedData[-1]: ##比较最后一个元素
self.SortedData.append(D)
print(self.SortedData)
continue

TimeCountCPU=time.clock()-TimeCountCPU
TimeCount=time.time()-TimeCount

print('排序后:\n')
print(self.SortedData)
print("总排序用时%4f\nCPU用时%4f\n"%(TimeCount,TimeCountCPU))
def dataRand(self):
temp=[]
for i in range(10):
temp.append(random.randint(1,100))
print(temp)
print("_____________")
return temp

if __name__ =="__main__":

IS=InsertionSorted()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: