快速排序是最常用的一种排序,因为它可以取得比较好的平均性能。快速排序是一种递归算法。采用了分而治之的思想。
它的核心步骤是:
1. 把一个序列分成左右两个部分,要求左边的数都比分界点小或相等,右边的数都比分界点的数大。
2. 对步骤1分出来的左右两个部分同样执行1到2的步骤。
那么如何把一个序列分成两个部分呢?设定两个指针i和j,还要设定一个初始比较值x。可以取序列最后的值为x。i左边的都比x小。j是迭代指针,从序列开头到倒数第二个数开始迭代:
1. 如果j指向的值比x大,j下移一位,i不动
2. 如果j指向的值比x小,把i下移一位,再把i和j指向的值交换。然后j下移一位
3. 最后把最后的值和i+1的值交换。
也就是逐步的将比x小的值加到i的队列中来
引用
# python quick sort
def exchange(i, j):
x = array[i]
array[i]=array[j]
array[j]=x
def partition(p,r):
x=array[r]
i=p-1
for j in range(p,r-1,1):
if array[j]<x:
i=i+1
exchange(i, j)
exchange(r,i+1)
return i+1
def quickSort(p,r):
if p<r:
x=partition(p,r)
quickSort(p,x-1)
quickSort(x+1,r)
array=[2,5,3,10,8]
quickSort(0,4)
print array
分享到:
相关推荐
基于python的排序算法-快速排序Quick Sort
python编写 快速排序 Quick Sort
python 一行代码实现的快速排序 quick sort
快速排序(Quick Sort)7. 堆排序(Heap Sort)8. 计数排序(Counting Sort)9. 桶排序(Bucket Sort)10. 基数排序(Radix Sort)三、算法总结 十大经典排序算法 一、 引言 授人以鱼不如授人以渔~ 实践是检
function quick_sort(s, _begin, _end) if _begin i = _begin j = _end pivot = s[j] while i while(i [i] ) do i = i + 1 end if i s[j] = s[i] end while(i [j] >= pivot) do j = j - 1 end if...
快速排序(Quick Sort) 堆排序(Heap Sort) 计数排序(Counting Sort) 基数排序(Radix Sort) 桶排序(Bucket Sort) 深度优先搜索(Depth-First Search, DFS) 广度优先搜索(Breadth-First Search, BFS) 二分...
本文件包含快速排序的基本思路,代码实现,时间复杂度的分析。对数据结构与算法中快速排序算法的实现,附件以python实现。
用python写的简单的快排算法,对了解快排有点帮助
快速排序算法,简称快排,是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现的。 本文用python语言介绍四种不同的快排实现。 1. 一行代码实现的简洁版本 quick_sort = lambda array: ...
quick sort快速排序是一种再基础不过的排序算法,使用Python代码写起来相当简洁,这里我们就来看一下Python实现快速排序算法及去重的快速排序的简单示例:
定义了一个名为quick_sort的函数来实现快速排序。函数将列表作为输入参数,并递归地将其划分为两部分,直到每个部分只有一个元素或为空。然后,通过将小于等于基准值的元素放入一个子列表(less)中,将大于基准值的...
快速排序(quick sort)是一种分治排序算法。该算法首先 选取 一个划分元素(partition element,有时又称为pivot);接着重排列表将其 划分 为三个部分:left(小于划分元素pivot的部分)、划分元素pivot、right...
一、快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R....它的基本思想是:通过...def quick_sort(num_list): """ 快速排序 """ if num_list == []: return num_list smallList = [] bigList =
复制代码 代码如下: def quick_sort(ls): return [] if ls == [] else quick_sort([y for y in ls[1:] if y < ls>= ls[0]]) if __name__ == ‘__main__’: l1 = [3,56,8,1,34,56,89,234,56,231,45,90,33,66,88,11,22...
快速排序/快速排序/quick_sort 215 中等的 4 中等的 295 难的 堆 1375 中等的 保留历史记录,并更新每个新数据 1099 中等的 排序 -> 两点 中等的 排序 - 两点(使用 while 跳过重复项) 15 中等的 排序 -> 基于 two...
名称功能名称快速排序quick_sort 气泡排序bubble_sort 选择排序selection_sort 插入排序insert_sort 堆排序heap_sort 合并排序merge_sort用法: 安装pip install -r requirements.txt 跑步python main.py function_...
快速排序的基本思想:首先选定一个数组中的一个初始值,将数组中比该值小的放在左边,比该值大的放在右边,然后分别对左边的数组进行如上的操作,对右边的数组进行如上的操作。(分治+递归) 1.利用匿名函数lambda ...
快速排序 Heap Sort 堆排序 Merge Sort 归并排序 Topological-Sort-拓扑排序 Dynamic Programming 动态规划 Greedy 贪心算法 Back Track 回溯法 Sliding Window 滑动窗口 Depth First Search 深度优先搜索 Breadth ...
基于 matplotlib 实现的基本排序算法的动态可视化项目源码,通过 pyaudio 增加音效,冒泡、选择、插入、快速等排序 排序算法 具体排序算法的代码实现见 sortx.py ...$ python start.py sortex quick_sort
Chukwudi Derek Anyanwu 该存储库包含代码示例,这些代码示例使用线性探测通过哈希表通过哈希表实现字典以解决冲突,并且还展示了我在以下方面的技能和经验: Python 解决问题的方法哈希表和字典线性探测排序抽象...