python快排】的更多相关文章

#归并排序 def mergeSort(a,L,R) :     if(L>=R) :         return     mid=((L+R)>>1)     mergeSort(a,L,mid)     mergeSort(a,mid+1,R)     p=L     q=mid+1     t=[]     while(p<=mid and q<=R) :         if a[p]<=a[q] :             t.append(a[p])   …
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 1 def kp(arr,i,j): 2 if i < j: 3 base = kpgc(arr,i,j) 4 kp(arr,i,base) 5 kp(arr,base+1,j) 6 def kpgc(arr,i,j): 7 base = arr[i] 8 while i < j: 9 whil…
代码: def partition(data,left,right): tmp = data[left] while left<right: while left < right and data[right]>=tmp: right -=1 data[left] = data[right] while left < right and data[left]<=tmp: left +=1 data[right] = data[left] data[left]=tmp retu…
def QS(array): less = [] more = [] if len(array) <= 1: return array head = array.pop() for x in array: if x <= head: less.append(x) else: more.append(x) return QS(less) + [head] + QS(more) if __name__ == '__main__': array = [8,10,9,6,4,16,5,13,26,18…
def quick_sort(array,left,right): if left>=right: return low=left high=right key=array[low]#设置基准数 while left<right: while left<right and array[right]>=key:#如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现 right-=1 array[left]=array[right]#如找到,则把第j个元素赋值给第个元…
#-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randint(1,10000) a.append(v) b.append(v) #冒泡 def sort_array(a): for i in range(len(a)): for j in range(i+1,len(a)): if a[i] > a[j]: i_v = a[i] a[i]=a[j] a[…
快排算法 ​ 简单来说就是定一个位置然后,然后把比它小的数放左边,比他大的数放右边,这显然是一个递归的定义,根据这个思路很容易可以写出快排的代码 ​ 快排是我学ACM路上第一个让我记住的代码,印象很深刻,以前学的是Pascal,写这个要写好长一串,但是因为和归并排序比起来还算短的,也就背下来了.好奇的我点开百科看python的快排代码,就看到了如下代码: #quick sort def quickSort(L, low, high): i = low j = high if i >= j: re…
用python写了个快排,第一次发现python居然可以这么简洁. def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr)//2] left = [x for x in arr if x<pivot] middle = [x for x in arr if x==pivot] right = [x for x in arr if x>pivot] return quicksort(left) + midd…
#-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randint(1,10000) a.append(v) b.append(v) #冒泡 def sort_array(a): for i in range(len(a)): for j in range(i+1,len(a)): if a[i] > a[j]: i_v = a[i] a[i]=a[j] a[…
快排的python实现 #python 2.7 def quick_sort(L): if len(L) <= 1: return L else: return quick_sort([lt for lt in L[1:] if lt<L[0]])+[L[0]]+\ quick_sort([ge for ge in L[1:] if ge>=L[0]])…