码迷,mamicode.com
首页 > 编程语言 > 详细

常用算法及效率分析

时间:2016-09-29 22:08:46      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:常用算法

算法即解决问题的方法,算法的核心就是为了提升性能

so

冒泡排序

冒泡一:

#_*_coding:utf-8_*_

‘‘‘
 冒泡排序
‘‘‘

import random,time


l=range(1000)
print(l)

random.shuffle(l)
print(l)


def timer(func):
    def _wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘the func %s run time is %s‘ %(func,stop_time-start_time))
    return _wrapper

@timer
def bubble_sort(l):
    for j in reversed(range(len(l))):
        for i in range(len(l)-1):
            if l[i] > l[i+1]:
                tmp=l[i]
                l[i]=l[i+1]
                l[i+1]=tmp
                #l[i],l[i+1]=l[i+1],l[i]
    print(l)


bubble_sort(l)

运行:

the func bubble_sort run time is 0.110095024109

冒泡2(改进:减少算法执行频度)

#_*_coding:utf-8_*_

‘‘‘
 冒泡排序
‘‘‘

import random,time


l=range(1000)
print(l)

random.shuffle(l)
print(l)


def timer(func):
    def _wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘the func %s run time is %s‘ %(func.__name__,stop_time-start_time))
    return _wrapper

@timer
def bubble_sort(l):
    for j in reversed(range(len(l))):
        for i in range(len(l)-1):
            if l[i] > l[i+1]:
                l[i],l[i+1]=l[i+1],l[i]
    print(l)


bubble_sort(l)


运行:
the func bubble_sort run time is 0.105001926422

冒泡3(改进:循环条件不要进行运算操作)

#_*_coding:utf-8_*_

‘‘‘
 冒泡排序
‘‘‘

import random,time

l=range(1000)

print(l)
random.shuffle(l)
print(l)



def timer(func):
    def _wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘the func %s run time is %s‘ %(func.__name__,stop_time-start_time))
        return res
    return _wrapper

@timer
def bubble_sort(l):
    l1 = reversed(range(len(l)))
    l2 = range(len(l) - 1)
    for j in l1:
        for i in l2:
            if l[i] > l[i+1]:
                l[i],l[i+1]=l[i+1],l[i]

    print(l)

bubble_sort(l)

运行:
the func bubble_sort run time is 0.0980820655823



选择排序

#_*_coding:utf-8_*_

‘‘‘
 选择排序:
 1.核心原理:每次比较的成果是取出最小值的索引,然后和未排序的第一个值交换顺序(第一次比较,未排序的第一个值的索引就是0)
 2.实现:两个for循环,外层循环控制未排序值的比较次数,内层循环控制每次取一个最小的值放左边
‘‘‘

import random,time

l=range(1000)

print(l)
random.shuffle(l)
print(l)


def timer(func):
    def _wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘the func %s run time is %s‘ %(func,stop_time-start_time))
        return res
    return _wrapper

@timer
def choice_sort(l):

    for j in range(len(l)):
        smallest_index=j
        for i in range(j,len(l)):
            if l[i] < l[smallest_index]:
                smallest_index = i

        l[j],l[smallest_index]=l[smallest_index],l[j]

        print(l)


choice_sort(l)

运行:

the func choice_sort run time is 0.0295298099518


插入排序

#_*_coding:utf-8_*_

‘‘‘
 插入排序:
 1.核心原理:
 2.实现:
‘‘‘

import random,time

l=range(1000)

print(l)
random.shuffle(l)
print(l)


def timer(func):
    def _wrapper(*args,**kwargs):
        start_time=time.time()
        res=func(*args,**kwargs)
        stop_time=time.time()
        print(‘the func %s run time is %s‘ %(func,stop_time-start_time))
        return res
    return _wrapper

@timer
def insert_sort(l):
    for j in range(len(l)):
        position=j
        while position > 0 and l[position] < l[position-1]:
            l[position],l[position-1]=l[position-1],l[position]
            position-=1



insert_sort(l)

运行:
the func insert_sort run time is 0.0595319271088


持续整理中。。。

本文出自 “一个好人” 博客,请务必保留此出处http://egon09.blog.51cto.com/9161406/1857870

常用算法及效率分析

标签:常用算法

原文地址:http://egon09.blog.51cto.com/9161406/1857870

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!