【陌陌】Python 快排

import random

def qsort2(array):
    if len(array) <= 1: return array
    else: return qsort2([i for i in array[1:] if i<array[0]]) + [array[0]] + qsort2([i for i in array[1:] if i>=array[0]])

def qsort(array, left, right):
    if left >= right: pass
    else:
        print array,left,right
        low = left+1
        high = right
        index = left
        while low <= high:
            while low<=high and array[low]<array[index]:
                low += 1
            while low<=high and array[high]>=array[index]:
                high -= 1
            if low<high:
                array[low],array[high] = array[high],array[low]
        if high > index:
            array[index],array[high]=array[high],array[index]
        print array, high
        print
        qsort(array, left, high-1)
        qsort(array, high+1, right)

x = [random.randint(0,100) for i in range(10)]
print x
qsort(x,0,9)
print x
时间: 2024-10-11 21:02:54

【陌陌】Python 快排的相关文章

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])            p+=

python 快排

某公司的面试题之一. RT. def exchange(mylist,i,j): tmp = mylist[i] mylist[i] = mylist[j] mylist[j] = tmp def patition(mylist,p,q): key = mylist[q] i = p-1 for j in range(p,q): if mylist[j] <= key: i = i+1 exchange(mylist,i,j) exchange(mylist,i+1,q) return i de

python快排算法

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 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

python快排

代码: 1 def partition(data,left,right): 2 tmp = data[left] 3 while left<right: 4 while left < right and data[right]>=tmp: 5 right -=1 6 data[left] = data[right] 7 while left < right and data[left]<=tmp: 8 left +=1 9 data[right] = data[left] 1

python 冒泡和快排,不多说【无聊】

1 #-*-coding:utf8-*- 2 import random 3 a=[] 4 b=[] 5 def init_array(): 6 for i in range(10000): 7 v = random.randint(1,10000) 8 a.append(v) 9 b.append(v) 10 11 #冒泡 12 def sort_array(a): 13 for i in range(len(a)): 14 for j in range(i+1,len(a)): 15 if

Python实现排序(冒泡、快排、归并)

Thomas H.Cormen 的<算法导论>上介绍的几个经典排序算法的Python实现. 1.冒泡排序: 简单的两重循环遍历,使最小(最大)的值不断地往上升(下沉)而实现的排序,算法时间为O(n2). 代码如下: 1 def up_sort(a): 2 # 冒泡排序 3 4 a_length = len(a) 5 while True: 6 i = 0 7 j = 1 8 9 while True: 10 if a[i] > a[j]: 11 a[i], a[j] = a[j], a[

python 版 quicksort 快排

今天看了下苹果xml 解析,写了个小demo 心想还是 在博客上写点东西吧,毕竟很久很久都没有上来了 先上个效果图把 接下来 看下 工程目录图吧 本demo 分两种解析模式,一是苹果自带的, 首先先看下苹果自带的吧,工程文件为 NoteXMLParser 文件 ,另一种解析模式 是 NotesTBXMLParser文件 NoteXMLParser.h 文件代码如下 : // // NoteXMLParser.h // TestXML // // Created by choni on 14-5-

用python写个快排

快排过程比较简单就直接上代码了: 1 #!/usr/bin/python3 2 3 def quik_sort(L, left, right): 4 if left <= right: 5 key = L[left] 6 i = left 7 j = right 8 while i < j: 9 while i < j and key <= L[j]: 10 j -= 1 11 L[i] = L[j] 12 while i < j and L[i] <= key: 13

Python的快排应有的样子

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