美文网首页
笔试题-python实现快排

笔试题-python实现快排

作者: 李瑞宝 | 来源:发表于2018-03-20 21:06 被阅读0次

快排思路

简单来说,就是找一个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;

相关文章

  • 笔试题-python实现快排

    快排思路 简单来说,就是找一个key值作为参考值,每次都找第一个。然后,用一个临时变量存参考值,再从头到尾,逐个比...

  • python实现快速排序

    受Haskell的快排启发 尝试了用python实现: 使用python实现更容易理解了(:зゝ∠)

  • python实现快排,选择排序

    选择排序 快速排序是一个重要D&C算法D&C算法(divide and conquer)—— 一种著名的递归式问题...

  • 快速排序

    最近找实习,发现快排挺吃香的,昨天阿里的面试官问了快排的思想和收敛条件,今天做另一家公司的笔试题也让写实现快速排序...

  • 转载:快排实现

    快速排序(Quicksort) 基本思想:(分治) 先从数列中取出一个数作为key值; 将比这个数小的数全部放在它...

  • js实现快排

    function quick_sort(list, start, end) {if (start < end) {...

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 快排Java实现

    1、快排的核心思想: 1、从无序的数组中找到一个枢轴元素M,将数组一分为二:如将数组的第一个元素设置为枢轴元素。2...

  • 快速排序算法的实现( Golang 和 Python )

    Python 中一行代码搞定快排 Python 快速排序 Golang 快速排序

  • Go语言实现快排+随机快排

    快排算法是一种本地算法,(即不需要额外的内存空间,就地排序) 基本思想:从这个数列里找一个数作为基准点(支点)跟其...

网友评论

      本文标题:笔试题-python实现快排

      本文链接:https://www.haomeiwen.com/subject/aaciqftx.html