打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
排序算法小结
用Python实现冒泡排序,快速排序,插入排序,以及Python的列表有自带的sort()方法啊,比较一下哪个算法更优。

随机生成包含10000个范围(0,65536)的随机数(int),然后我就被打击了...

from random import randint
import time, datetime, copy


list = [randint(0, 65536) for i in xrange(10000)]
list1 = copy.deepcopy(list)
list2 = copy.deepcopy(list)
list3 = copy.deepcopy(list)
n = len(list)
time1 = time.time()
for i in xrange(n):
    for j in xrange(i, n):
        if(list[i] > list[j]):
            temp = list[j]
            list[j] = list[i]
            list[i] = temp
print list
time2 = time.time()
time11 = time2 - time1
print time11
 
 
result = []
time3 = time.time()
for i in xrange(n):
    max_element = max(list1)
    del list1[list1.index(max_element)]
    result.append(max_element)
time4 = time.time()
time12 = time4 - time3
print time12


def QuickSort(value, left, right):
    if(left < right):
        key = value[left]
        low = left
        high = right
        while(low < high):
            while((low < high) & (value[high] >= key)):
                high -= 1
            value[low] = value[high]
            while((low < high) & (value[low] <= key)):
                low += 1
            value[high] = value[low]
            value[low] = key
        QuickSort(value, left, low - 1)
        QuickSort(value, low + 1, right)
time5 = time.time()       
QuickSort(list2, 0, n - 1)
time6 = time.time()
time13 = time6 - time5
print time13
print time12 / time13

time7 = time.time()
list3 =sorted(list3)
time8 = time.time()
time14 = time8 - time7
print time14

    总结:

          (1)能用for循环的时候,就不要用while循环。

          (2)有时候我们需要在代码简洁和程序效率之间做成平衡。。

          (3)Python自带的sorted()函数和列表的sort()方法更为强大

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java实现快速排序
算法连载(2)--快速排序与插入排序的比较 - Compower Studio - CSD...
[i**i for i in xrange(3)]
C#快速排序类
插入,冒泡,选择,快速排序,二分查找
经典排序算法及python实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服