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     while j<=high:
16         ltmp.append(li[j])
17         j += 1
18     li[low:high+1]=ltmp
19 # li = [1,5,7,8,9,2,5,7,10]
20 # merge(li,0,len(li)//2,len(li)-1)
21 # 本算法时间复杂度为O(n*logn)
22 def merge_sort(li,low,high):
23     if low<high:
24         mid = (low+high)//2
25         merge_sort(li,low,mid)
26         merge_sort(li,mid+1,high)
27         merge(li,low,mid,high)
28
29
30 import time
31 def timer(func):
32     def inner(*args,**kwargs):
33         start = time.time()
34         ret = func(*args,**kwargs)
35         end = time.time()
36         print(end-start)
37         return ret
38     return inner
39 @timer
40 def outer(li,low,high):
41     merge_sort(li,low,high)
42 # import random
43 # li = list(range(1000))
44 # random.shuffle(li)
45 # print(li)
46 # outer(li,0,len(li)-1)   # 1000个数据费时0.004s
47 # print(li)
48
49 # li = list(range(10000))
50 # random.shuffle(li)
51 # print(li)
52 # outer(li,0,len(li)-1)   # 10000个数据费时0.05s
53 # print(li)

原文地址:https://www.cnblogs.com/liuyankui163/p/8342573.html

时间: 2024-11-09 11:52:15

python算法——快速排序算法的相关文章

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] >=

编程算法 - 快速排序算法 代码(C)

快速排序算法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 经典的快速排序算法, 作为一个编程者, 任何时候都要完整的手写. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <stdlib.h> int RandomInRange(int min,

排序算法--快速排序算法解析

一.快速排序算法思路 ①.取待排序列表的第一个元素p,通过归位算法,挪移他到列表中正确的位置. ②.列表被元素p分成两部分,左边都比元素p小,右边都比元素p大. ③.通过递归,在两部分,重复1.2步骤,直至列表有序. 归位算法动画演示: 二.快速排序算法代码示例 1 def partition(l,left,right):#归位算法 2 temp = l[left] #保存归位元素 3 while left <right: 4 while l[right]>=temp and left<

Python实现快速排序算法

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

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&

归并与快速排序算法对处理同等规模的数据的对比

用长分别为100.200.300.400.500.600.700.800.900.1000的10个数组的排列来统计这两种算法的时间复杂性: 快速排序程序: #include<iostream> using namespace std; int circle; static int num[11]={0,0,0,0,0,0,0,0,0,0,0}; void vector_initial(int *array,int n); void vector_print(int *array,int n);

python数据结构与算法 35 快速排序

快速排序 快速排序也使用了分而治之的策略来提高性能,而且不需要额外的内存,但是这么做的代价就是,列表不是对半切分的,因而,性能上就有所下降. 快速排序选择一个数值,一般称为"轴点",虽然有很多选取轴点的方法,我们还是简单地把列表中第一个元素做为轴点了.轴点的作用是帮助把列表分为两个部分.列表完成后,轴点所在的位置叫做"切分点",从这一点上把列表分成两部分供后续调用. 图12所示,54将作为轴点.这个例子我们已经排过多次了,我们知道54在排好序后将处于现在31的位置上

Python实现排序算法之快速排序

Python实现排序算法:快速排序.冒泡排序.插入排序.选择排序.堆排序.归并排序和希尔排序 Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它小的放到它前面,所有比它大的放到它后面,这个过程称为一趟快速排序 快速排序原理图如下: 实现 #coding=utf-8 #python实现快速排序 def quick_sort(li,start,end): if start < end: flag = li[start] print(flag)

python版的快速排序算法源码

下面的代码段是关于python版的快速排序算法的代码,应该对各位朋友有用途. def qsort(L): return ((qsort([x for x in L[1:] if x < L[0]]) + L[0:1] + qsort([x for x in L[1:] if x >= L[0]]) ) if L else []) 版本2 def qsort3(arr, l, r): def swap(arr, s, d): if s != d: tmp = arr[s] arr[s] = ar