快速排序(python)

来源:互联网 发布:js判断按钮是否被点击 编辑:程序博客网 时间:2024/05/20 11:21
快排的思想主要是分治。选定数组的某个值作为比较用的key(代码中选用的是数组的最后一位),设定两个指针i和j,i一直指向第一个比key大的位置,j一直往后移动(直到倒数第二位),若j遇到比key小的,则j和i的数互换(i和j分别加一),否则,只有j向后移动(即:只有j加一),最后,将i和最后一位互换,则将数组分为i-1之前和i+1之后两个数组(i的数已经放在了正确的位置上)。返回i的位置,将i-1之前和i+1之后的数组继续排序。
from random import shuffledef quicksort(arr, p, r):if p < r:q = partion(arr, p, r)quicksort(arr, p, q-1)quicksort(arr, q+1, r)return arrdef partion(a, p, r):#select arr[r] to comparision.i = pfor j in range(p,r):if a[j] < a[r]:a[i], a[j] = a[j],a[i]i += 1j += 1a[i],a[r] = a[r], a[i]return iif __name__ == '__main__':arr = range(10)shuffle(arr)print 'original array is:\n',arrresult = quicksort(arr, 0, len(arr)-1)print 'quicksort result is:\n',result

0 0
原创粉丝点击