zoukankan      html  css  js  c++  java
  • 排序算法的python实现

    冒泡排序

    比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上。
    def bubble_sort(list):
        if list != 0:
            if len(list) == 1:
                pass
            else:
                for i in range(len(list)):
                    is_swap = 0
                    for j in range(len(list)-i-1):
                        if list[j] > list[j+1]:
                            # 交换j,j+1位置上的数字
                            is_swap = 1
                            list[j],list[j+1]=list[j+1],list[j]
                    if not is_swap:
                        return
    插入排序

    将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
    def insert_sort(list):
        if list != 0:
            if len(list) == 1:
                pass
            else:
                for i in range(1,len(list)):
                    j = i-1
                    while(j>=0):
                        if list[j] > list[j+1]:
                            # 交换j,j+1位置上的数字
                            list[j],list[j+1]=list[j+1],list[j]
                        j-=1

    快速排序

    通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列。
    def quick_sort(a,start,end):
        #print(start, end)
        if start >= end:
            return
        pivot = a[start]
        #print(pivot)
        low = start
        high = end
        while start < end:
            while start < end and a[end] >= pivot:
                end -= 1
            a[start] = a[end]
            while start < end and a[start] <= pivot:
                start += 1
            a[end] = a[start]
        a[end] = pivot
        #print(a)
        quick_sort(a, low, start - 1)
        quick_sort(a, end + 1, high)

    测试程序:针对不同算法设计测试程序,单次程序执行时间不是固定的。

    if __name__ == '__main__':
        list1 = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
        print("原始数据:")
        print(list1)
        start = time.clock()
        start1 = datetime.datetime.now()
        bubble_sort(list1)
        end1 = datetime.datetime.now()
        end = time.clock()
        print("排序后的数据:")
        print(list1)
        print('冒泡排序耗时: %s 秒'%(end - start))
        print('冒泡排序耗时:')
        print(end1-start1)
    
        list1 = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
        print("
    原始数据:")
        print(list1)
        start = datetime.datetime.now()
        insert_sort(list1)
        end = datetime.datetime.now()
        print("排序后的数据:")
        print(list1)
        print("插入排序耗时:")
        print(end - start)
    
        list1 = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
        print("
    原始数据:")
        print(list1)
        start = time.clock()
        quick_sort(list1, 0, len(list1)-1)
        end = time.clock()
        print("排序后的数据:")
        print(list1)
        print('快速排序耗时: %s 秒' % (end - start))
  • 相关阅读:
    js 实现树效果
    (转)JavaScript 冒泡实例与阻止冒泡方法
    (转)js全页面刷新方法
    js 右键菜单
    (转)js,jQuery屏蔽鼠标右与jquery 鼠标右键事件、左键单击事件判定
    Flex取xml文件中的值
    oracle相关时间计算,得到季度第一天、最后一天
    (转)ASP.NET MVC VS2010中更改默认调试浏览器
    JS 与 后台如何获取 Cookies
    js 弹出新页面
  • 原文地址:https://www.cnblogs.com/jerry116/p/8667812.html
Copyright © 2011-2022 走看看