筆試題-python實現快排

##快排思路
簡單來說,就是找一個key值作爲參考值,每次都找第一個。然後,用一個臨時變量存參考值,再從頭到尾,逐個比較比參考值小的,換值,i++:從後往前,比較比參考值大的,換值j−-。直到i=j退出

1、先從數列中取出一個數作爲基準數
2、分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊
3、再對左右區間重複第二步,直到各區間只有一個數

#coding=utf-8
import sys
import math

def partion(nums,left,right): #partion
    key = nums[left];
    low = left;
    high = right;
    while low < high:
        while(low < high) and (nums[high] >=key):
            high = high -1;
        nums[low] = nums[high];
        while(low < high) and (nums[high] <=key):
            low = low +1;
        nums[high] = nums[low];
        nums[low] = key;
    return low

def quicksort(nums,left,right):#quicksort
    if left<right:
        p = partion(nums,left,right);
        quicksort(nums,left,p-1);
        quicksort(nums,p+1,right);#遞歸操作
    return nums;

if __name__ == "__main__":
    a= raw_input();
    nums=[];
    for i in a.split(' '):
        nums.append(int(i));
    right = len(nums)-1;
    left = 0;
    ans = quicksort(nums,left,right);

    print ans;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章