zoukankan      html  css  js  c++  java
  • python实现冒泡排序和快速排序

    冒泡排序和快排的python实现:

    
    data = [1, 3, 5, 10, 4, 7]
    times = 0
    "冒泡排序"
    for i in range(len(data)):
        for j in range(len(data) - i - 1):
            if data[j] > data[j + 1]:
                tmp = data[j + 1]
                data[j + 1] = data[j]
                data[j] = tmp
            times += 1
    
    print("冒泡排序")
    print(data)
    print("times:%d" % times)
    
    
    "改进冒泡排序,插入标志位,提前结束排序"
    data = [1, 3, 5, 10, 4, 7]
    times = 0
    for i in range(len(data)):
        pos = 0
        for j in range(len(data) - i - 1):
            if data[j] > data[j + 1]:
                tmp = data[j + 1]
                data[j + 1] = data[j]
                data[j] = tmp
                pos = 1
            times += 1
        if pos == 0:
            break
    
    print("改进冒泡排序")
    print(data)
    print("times:%d" % times)
    
    
    "快排,选第一个数为基准值,小数放在基准左边,大数放在基准右边"
    data = [1, 3, 5, 10, 4, 7]
    
    
    def exchage(x, y):
        return y, x
    
    
    def qsort(left , right):
        if left > right:
            return
        p = data[left]
        i = left
        j = right
    
        while i != j:
            
    
            while data[j] > p and i < j:
                j -= 1
    
            data[i],data[j] = exchage(data[i],data[j])
    
            while data[i] < p and i < j:
                i += 1
            
            data[i],data[j] = exchage(data[i],data[j])
    
        
        qsort(left,i-1)
        qsort(i+1,right)
        
    
    qsort(0,len(data)-1)
    print("quick sort")
    print(data)
    
    

    输出结果:

    冒泡排序
    [1, 3, 4, 5, 7, 10]
    times:15
    改进冒泡排序
    [1, 3, 4, 5, 7, 10]
    times:12
    quick sort
    [1, 3, 4, 5, 7, 10]
    
  • 相关阅读:
    测试覆盖(率)到底有什么用?
    重构遗留程序的一次案例学习(java程序)
    rsync学习
    一次awk脚本的重构
    哪本书是对程序员最有影响、每个程序员都该阅读的书?
    我的阅读编程书籍的好方法
    领域驱动设计和实践
    不要if else的编程
    编码规范的要点
    最牛B的编码套路
  • 原文地址:https://www.cnblogs.com/WeyneChen/p/6682611.html
Copyright © 2011-2022 走看看