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)

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

原文地址:https://www.cnblogs.com/xiaolu915/p/10528656.html