Python实现快速排序

用Python写了一个快速排序。简单练习一下Python的基本语法。

快速排序采用分治法,基本思想是选取数组中一个数为基准数,一次排序过程中,将比基准数小的都放在它左边,比基准数大的不动。然后经过一次排序,左边部分都比基准数小,右边都比基准数大,然后对左右两边分别进行同样的排序(递归)。最后只直到剩下一个数字。

快速排序的思想还是比较简单的,也有多种实现思路。下列代码用的是简单的递归实现。

def quickSort(num,l,r):
    if l>=r:#如果只有一个数字时,结束递归
        return
    flag=l
    for i in range(l+1,r+1):#默认以第一个数字作为基准数,从第二个数开始比较,生成索引时要注意右部的值
        if num[flag]>num[i]:
            tmp=num[i]
            del num[i]
            num.insert(flag,tmp)
            flag+=1
    quickSort(num,l,flag-1)#将基准数前后部分分别递归排序
    quickSort(num,flag+1,r)

num=[1,-2,4,7,6,3,2,3]
quickSort(num,0,7)
print(num)

Python语言方面,有几个要注意的地方。

1.range()函数。在Python的迭代循环中用途很多。

range(5):生成0~4的数组。

range(0,5):生成0~4的数组。

range(1,5):生成1~4的数组。

range(1,5,2):生成1~4的数组,间隔为2-->[1,3]

2.数组操作,也就是链表。

插入元素调用数组自身的insert()方法。insert(index,value)。值得注意的是,将元素插入到指定元素前面一个位置,index值应该是指定元素的index值,插入后,指定元素向后移位。插♂入到后面o(╯□╰)o就直接将index+1就行了。

删除元素的话,用del arr[index]即可,后面的元素索引减一。

3.打印函数

在Python3.X中取消了原先的print XXX的用法。替代以print()函数。打印时默认加换行符,如果不想换行的话,Python2.X的做法是在最后加一个逗号。Python3中则是用print(XXX,end="")这样的做法。end就是结尾符。

4.语法

第一次写Python,以前只写过C和Java。Python虽然作为一个面向对象的语言,但是却不强求你使用面向对象。比如这个快排的思想就很接近C。最大的不同Python是动态语言,不需要声明变量,写惯了静态语言有些不习惯。这样带来了灵活性,却也给调试带来困难。

跟Java语法的不同点:Python是以缩进来区分代码块的,Java中的所有大括号被替代成了冒号,并按照缩进组织结构。每行代码可以不加分号。这样做强制程序员按照规范组织代码,有利有弊吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值