zoukankan      html  css  js  c++  java
  • python16_day39【算法】

    复习:

      1.递归

    • 调用自身
    • 结束条件

    一、冒泡算法

    1 def bubble_sort(numbs):
    2     for i in range(len(numbs)-1):       # 这个循环负责设置冒泡排序进行的次数。
    3         for j in range(len(numbs)-i-1): # j为列表索引, -1为了报错IndexError: list index out of range
    4             if numbs[j] > numbs[j+1]:
    5                 numbs[j], numbs[j+1] = numbs[j+1], numbs[j]
    6     return numbs
    7 nums = [5,2,45,6,8,2,1]
    8 
    9 print(bubble_sort(nums))
    bubble_sort

    二、冒泡优化版

     1 def bubble_sort(numbs):
     2     for i in range(len(numbs)-1):       # 这个循环负责设置冒泡排序进行的次数。
     3         exchange = False
     4         for j in range(len(numbs)-i-1): # j为列表索引, -1为了报错IndexError: list index out of range
     5             if numbs[j] > numbs[j+1]:
     6                 numbs[j], numbs[j+1] = numbs[j+1], numbs[j]
     7                 exchange = True
     8         if not exchange:
     9             break
    10     return numbs
    11 nums = [5,2,45,6,8,2,1]
    12 
    13 print(bubble_sort(nums))
    14 
    15 bubble_sort
    View Code


    三、快排

     1 import random
     2 import time
     3 
     4 def quick_sort_(data, left, right):
     5     if left < right:
     6         mid = partition(data, left, right)
     7         quick_sort_(data, left, mid - 1)
     8         quick_sort_(data, mid + 1, right)
     9 
    10 def partition(data, left, right):
    11     tmp = data[left]        # 拿到最左边的数
    12     while left < right:     # 左右不碰的时候一直走。
    13         while left < right and data[right] >= tmp:  # 从右边找
    14             right -= 1  # 如果右边的大,右边向左移
    15         data[left] = data[right]  # 如果右边的小,移到左边去。
    16         while left < right and data[left] <= tmp:   # 从左边找
    17             left += 1
    18         data[right] = data[left]
    19     data[left] = tmp  # 左右碰上了,就把TMP放回来
    20     return left     # 返回mid
    21 
    22 
    23 def quick_sort(data):
    24     return quick_sort_(data, 0, len(data)-1)
    25 
    26 data = list(range(10000))
    27 random.shuffle(data)
    28 quick_sort(data)
    quick_sort
  • 相关阅读:
    enum
    高可用复用类
    int 和 Integer 的区别
    MysqlMd5加密
    软件测试例子
    Wordcount
    大气登录页面
    生成二维码的JAVA
    多态的理解
    打印低头思故乡 java
  • 原文地址:https://www.cnblogs.com/weibiao/p/7811873.html
Copyright © 2011-2022 走看看