zoukankan      html  css  js  c++  java
  • 最重要的算法

    快速排序

    def quick_sort(li,left,right):
        if left<right:
            mid=partition(li,left,right) #首先给li中最左边的元素归位,返回归位后元素的索引 
            quick_sort(li,left,mid-1)  #接着给归位了的元素左边的,左端列表的,最左侧元素进行归位
            quick_sort(li,mid+1,right) #给归位了的元素的右边的,右端列表的,最左侧元素进行归位
    
    
    def partition(li,left,right):
        tmp=li[left]
        while left<right:
            #从右边找比tmp小的
            while left<right and li[right]>=tmp: #当右边比tmp大时,一直找,直到找到比tmp小的数
                right-=1
            li[left]=li[right]  #当找到了比tmp小的数就把右边的值赋值给左边
            #从左边找比tmp大的
            while left<right and li[left]<=tmp: #当左边的数比tmp小时,一直找,直到找到比tmp大的数
                left+=1
            li[right]=li[left] #当找到了比tmp大的数,把左边的大数,赋值给右边
    
        li[left]=tmp
        return left
    
    import random
    l=list(range(0,13))
    random.shuffle(l)
    quick_sort(l,0,len(l)-1)
    print(l)
    
    
    时间复杂度:
        最优:O(n)
        最差:O(n^2)
        时间复杂度:O(nlogn)
    

      

    二分查找

    def binary_search(alist,item):
        """二分查找---递归实现"""
        n = len(alist)
        if n > 0:   
            mid  = n//2
            if item == alist[mid] :
                return True
            elif item < alist[mid]:
                return binary_search(alist[:mid],item)
            elif item> alist[mid]:
                return binary_search(alist[mid+1:], item)
         else:
           return '没有您要查找的元素'
    else : return False print(binary_search([12,3,4,5,5,6],333))

     

    冒泡查找

    def bubble_sort(li):
        for i in range(len(li) - 1):
            for j in range(len(li) - i - 1):
                if li[j] > li[j + 1]:
                    # 交换两个变量的值,'='右边其实是一个元组(Tuple)
                    li[j], li[j + 1] = li[j + 1], li[j]
    
    li = [4, 6, 2, 7, 1, 9, 0]
    bubble_sort(li)
    print(li)
    

      

  • 相关阅读:
    大数减法模板
    扩展kmp模板
    poj2185(kmp)
    poj3167(kmp)
    kuangbin专题K(next数组)
    kuangbin专题16I(kmp)
    kuangbin专题16H(next数组)
    kuangbin专题16D(next求最小循环节)
    kuangbin专题16B(kmp模板)
    Java集合--TreeSet
  • 原文地址:https://www.cnblogs.com/djfboai/p/10073411.html
Copyright © 2011-2022 走看看