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
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/weibiao/p/7811873.html
Copyright © 2011-2022 走看看