python-实现快速排序

# encoding=utf-8

def quick_sort(alist, start, end):
    """快速排序"""
    if start >= end:
        return

    mid = alist[start]
    left = start
    right = end

    while left < right:
        while left < right and alist[right] >= mid:
            right -= 1
        alist[left] = alist[right]
        while left < right and alist[left] < mid:
            left += 1
        alist[right] = alist[left]
    # 退出循环后, left于right重合,即相等
    alist[left] = mid

    quick_sort(alist, start, left-1)
    quick_sort(alist, left+1, end)

if __name__ == ‘__main__‘:
    alist = [22, 1, 4, 553, 3, 212, 77]
    print(alist)
    quick_sort(alist, 0, len(alist)-1)
    print(alist)
时间: 2024-08-28 09:30:57

python-实现快速排序的相关文章

Python与快速排序

这个算法系列主要是自己学习算法过程中动手实践一下,写这个文章作为笔记和分享个人心得,如有错误请各位提出. 注:转载请说明出处 问题提出: 将以下数据升序排列:5, 2, 8, 6, 4, 9, 7, 3, 1 快速排序的原理: 快速排序的核心思想是(如下图) 1.先确定一个基准数,让后按照比较规则,如本例是升序排列,则将比基数大的放到右边,比基数小的放到左边. 2.接下来各边重复步骤1,直到全部排序完毕. 程序设计的思路就是(以上面的问题为例) 左右分别遍历比较 1 #非程序代码,只用来讲解 2

python实现快速排序算法(两种不同实现方式)

# -*- coding: utf-8 -*- """ Created on Fri May 16 17:24:05 2014 @author: lifeix """ #快速排序 import sys import random length = 30 def qsort(arr,left,right): lp = left rp = right if lp == rp:return while True: while arr[lp] >=

Python实现快速排序算法

快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "基准"(pi

Python实现快速排序

这里采用的是算法导论的划分方式: import random def partition(array, left, right): pivot = array[left] i = left #j left +1 -> right for j in range(left + 1, right + 1): if array[j] < pivot: i += 1 temp = array[i] array[i] = array[j] array[j] = temp temp = array[left

[硕.Love Python] QuickSort(快速排序)

def partition(a, i, j):     k = -1     while True:         while k * (a[i] - a[j]) >= 0:             if i == j:                  return i             j += k         a[i], a[j] = a[j], a[i]         i, j, k = j, i - k, -k def qsort(a, i, j):     if i <

python算法-快速排序

快速排序: 学习快速排序,要先复习下递归: 递归的2个条件: 1. 函数自己调用自己 2.有一个退出的条件 练习:基于递归下一个函数,计算n!并且求出当n等于10的值. n!=n * n-1*-..*1 #enconding = utf-8 def func(n): if n<=1: return 1 else: return n*func(n-1) print func(10) 结果:3628800 快速排序:也是基于递归的思想 核心思想:对于一个数组 12  23  3  4  56  21

Python 实现快速排序和随机快速排序

直接上代码: #快速排序 #coding: utf-8 def quicksort(a,left,right): if(left<right): mid = partition(a,left,right) quicksort(a,left,mid-1) quicksort(a,mid+1,right) def partition(a,left,right): x = a[right] i = left-1 #初始i指向一个空,保证0到i都小于等于 x for j in range(left,ri

python算法——快速排序算法

归并排序 1 def merge(li, low,mid, high): 2 i = low 3 j = mid+1 4 ltmp = [] 5 while i<=mid and j <=high: 6 if li[i]<li[j]: 7 ltmp.append(li[i]) 8 i += 1 9 else: 10 ltmp.append(li[j]) 11 j += 1 12 while i<=mid: 13 ltmp.append(li[i]) 14 i += 1 15 whi

python日记-快速排序算法

__author__ = "yang xin" array=[] def quickSort(left,right): if left > right: return temp = array[left] i = left j = right while i < j: if array[j] >= temp and i<j: #if j-1>=left: j -= 1 if array[i] <= temp and i<j: # if i+1&

python 实现快速排序(面试经常问到)

# -*- coding: UTF-8 -*- # 递归实现, 把过程打印出来便于理解 def quick_sort1(lis, start, end): if start >= end: return lf = start rg = end base = lis[lf] while lf < rg: while lf < rg and lis[rg] <= base: rg -= 1 lis[lf] = lis[rg] print("while1", lis)