觉得python写快排真的简单易懂

记录下自己学习python的学习路

快速排序:

def mySort(l):
    if len(l)<2:#如果列表中只有一个元素就会返回
        return l
    num=l[0]#拿一个元素作为参考元素
    startl=[x for x in l[1:] if x <= num ]#使用列表推导式把小于等于参考元素的放入新的列表
    endl=[x for x in l[1:] if x > num ]#使用列表推导式把大于参考元素的放入新的列表
    #使用递归的方式将排序好的元素拼接为新的列表返回
    return sort(startl)+[num]+sort(endl)

冒泡排序:

def mySort(l):
    for i in range(len(l)):
        for j in range(len(l)-1):
            if l[i]<l[j]:
                l[i],l[j]=l[j],l[i]
    return  l

原文地址:https://www.cnblogs.com/wang14339/p/9468909.html

时间: 2024-08-03 10:49:35

觉得python写快排真的简单易懂的相关文章

Python的快排应有的样子

快排算法 ? 简单来说就是定一个位置然后,然后把比它小的数放左边,比他大的数放右边,这显然是一个递归的定义,根据这个思路很容易可以写出快排的代码 ? 快排是我学ACM路上第一个让我记住的代码,印象很深刻,以前学的是Pascal,写这个要写好长一串,但是因为和归并排序比起来还算短的,也就背下来了.好奇的我点开百科看python的快排代码,就看到了如下代码: #quick sort def quickSort(L, low, high): i = low j = high if i >= j: re

自己写快排模板与C++快排库函数使用

自己写快排模板与C++快排库函数使用 1.自己写快排模板 我理解的快速排序思想原理是: 假定待排序数组的范围是0~N 1.在一个数组中找一个数作为中心点M(可以使用固定位置的数,也可以随机的采用数组中的数) 2.把数组中所有的数与这个中心点进行比较.小于中心点的数移到中心点左边,大于中心点的数移到中心点右边. 3.经过上面两步可以得到由M点所划分的两个数组(一个数组都小于等于M,一个都大于等于M),再对这两个数组递归的进行1.2所示步骤,知道划分的数组大小为0: 快排思想实现的主要的重点难点在于

python写的第一个简单小游戏-猜数字

1 #Filename:game1.py 2 3 guess=10 4 running=True 5 while running: 6 try: 7 answer=int(raw_input('Guess what i think:')) 8 except: 9 print 'Please input interga\n' 10 continue 11 12 if answer<guess: 13 print 'Your answer is too small\n' 14 continue 15

Python 实现快排

快速排序简介快速排序,又称划分交换排序,从无序队列中挑取一个元素,把无序队列分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.简单来说:挑元素.划分组.分组重复前两步 快速排序原理示意图通过上面对快速排序的简介,我们知道了,快速排序主要包括以下两方面:挑元素划分组.整体递归分组挑元素划分组示意图: 特点:1.因为是无序队列,所以位置可以随机挑2.临时划分一个空间,存放我们挑

WPF Button , RadionButon 等控件样式模板自己画,不需要写繁琐的代码, 简单,易懂

前在博客上看了别人定义的样式代码,感觉比wpf中自带的要炫的多, 而作为刚开始的学wpf要做一个好的界面是有多么难, 想想都是痛苦, 每次在网上看到别人的好的控件模板就想复制黏贴下来, 而且每次从网上复制下来的代码一般都是编译不过的, 然后就自己有要调试, 还需要修改一些代码, 达到自己的要求, 反正想起来都是泪, 废话不多说, 开始进入正题 画控件IDE: blend for VS2013 (一般安装的vs2013都有吧, 这个不太清除, 我的是vs2013旗舰版的自己带) 1:单击单开vs2

【Python实现快排】 -- 2019-08-09 12:12:36

原文: http://106.13.73.98/__/117/ 挖坑法思路: 取一个元素p(第一个元素),使元素p归位: 列表被p分成两部分,左边的数一定不大于p,右边的数一定不小于p: 递归完成排序. Python代码示例: lst = [5, 7, 4, 3, 1, 2, 9, 8] def quick_sort(d, l, r): if l < r: m = partition(d, l, r) quick_sort(d, l, m - 1) quick_sort(d, m + 1, r)

【Python实现快排】 &#202465;

原文: http://blog.gqylpy.com/gqy/342 " 挖坑法思路: 取一个元素p(第一个元素),使元素p归位: 列表被p分成两部分,左边的数一定不大于p,右边的数一定不小于p: 递归完成排序. Python代码示例: lst = [5, 7, 4, 3, 1, 2, 9, 8] def quick_sort(d, l, r): if l < r: m = partition(d, l, r) quick_sort(d, l, m - 1) quick_sort(d, m

手写快排模版

1 #include <bits/stdc++.h> 2 using namespace std; 3 int a[100]; 4 int n; 5 inline int read() 6 { 7 int x=0,f=1; 8 char ch=getchar(); 9 while(ch<'0'||ch>'9') 10 { 11 if(ch=='-') 12 f=-1; 13 ch=getchar(); 14 } 15 while(ch>='0'&&ch<

Python随笔-快排

def swap(arr, i, j): temp = arr[i] arr[i] = arr[j] arr[j] = temp def part(arr, beg, end): if end - beg <= 0: return beg v = arr[beg] idx = beg + 1 for x in range(beg+1, end+1): if(arr[x] < v): swap(arr, idx, x) idx += 1 swap(arr, idx-1, beg) return