zoukankan      html  css  js  c++  java
  • python实现快速排序、冒泡

    快速排序:首先任意选取一个数据(通常选用数组的第一个参数)作为关键数据,然后将比它小的数放在它前面,比它大的数放在后面,这个过程称之为快速排序

    def quick_sort(l):
        if len(l) <= 1:
            return l
        left = []
        right = []
        base=l.pop()
        for x in l:
            if x <base:
                left.append()
            else:
                right.append()
        return quick_sort(left)+[base]+quick_sort(right)

    七行代码实现快速排序

    def quick_sort(l):
        if len(l) <= 1:
            return l
        base = l[0]
        left = [x for x in l[1:] if x < base]
        right = [x for x in l[1:] if x >= base]
        return kuaisu_sort(left) + [base] + kuaisu_sort(right)
    l = [5,8,6,3,55,9]
    print(quick_sort(l))

    冒泡排序:直观的意思就是气泡越大冒的越快

         间接的说就是响铃的两个数字先进行比较,如果两个数字的顺序不对,就进行调换

    
    

    def func(ll):
    num = len(ll) # num = 6
    for i in range(num): # 取出每一个元素

    for j in range(0, num - i - 1):

    if ll[j] > ll[j + 1]:
    ll[j], ll[j + 1] = ll[j + 1], ll[j]


    ll = [5, 45, 65, 95, 3, 521]

    func(ll)
    print(ll)
     

    6行代码实现冒泡排序

    def bubble_sort(l):
        # 外层循环
        for i in range(len(l)-1):
            # 内层比较循环,j为索引
            for j in range(len(l)-i -1):
                if l[j]>l[j+1]:
                    l[j],l[j+1]=l[j+1],l[j]
        return l
     

    二分查找:将n个元素分层大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2]则找到x,算法中止,如果x<a[n/2],则只要在数组a的左半部分继续搜索x,,如果x>a[n/2],则只要在数组a的右半部搜索x.

    代码如下:

    def find(l,aim,start = 0,end = None):
        end = len(l) if end is None else end
        mid_index = (end - start)//2 + start
        if start <= end:
            if l[mid_index] < aim:
                return find(l,aim,start =mid_index+1,end=end)
            elif l[mid_index] > aim:
                return find(l, aim, start=start, end=mid_index-1)
            else:
                return mid_index
        else:
            return '找不到这个值'
    
    
    ret= find(l,44)
    print(ret)

    :二分查找算法 必须处理有序的列表

  • 相关阅读:
    移动端如何强制页面横屏
    css实现内容渐变隐藏效果,手机网页版知乎内容隐藏效果的实现
    css3中样式计算属性calc()的使用和总结
    如何使用JS操纵伪元素
    HTML5全局属性汇总
    20 个 CSS高级样式技巧汇总
    网页开发中利用CSS以图换字的多中实现方法总汇
    html/css解决inline-block内联元素间隙的多种方法总汇
    [算法] 泊松分布、指数分布
    [算法] 递归
  • 原文地址:https://www.cnblogs.com/xiaolu915/p/10528656.html
Copyright © 2011-2022 走看看