Python常见数据结构算法

1、二分查找 

    def bin_search(array, left, right, x):
        if right >= left:
            mid = int(left + (right - left) / 2)
            if array[mid] == x:
                return mid
            elif array[mid] > x:
                return bin_search(array, left, mid-1, x)
            else:
                return bin_search(array, mid+1, right, x)
        else:
            return -1
    array = [12, 13, 15, 16, 123, 125]
    x = 123
    result = bin_search(array, 0, len(array) - 1, x)
    if result != -1:
        print('该元素在数组的索引位置为{}'.format(result))
    else:
        print('该元素不在数组中')

 2、线性查找

    def xianxing(array,x):
        for i in range(0,len(array)):
         if array[i]==x:
             return i
        return -1
    array=[1,2,34,56,234]
    x=34
    result=xianxing(array,x)
    if result != -1:
        print('该元素在数组的索引位置为{}'.format(result))
    else:
        print('该元素不在数组中')

3、 Python 直接插入排序

def insertion(array):
    for i in range(1, len(array)):
        j = i - 1
        key=array[i]
        while j >= 0 and array[j] > key:
            array[j+1] = array[j]
            j -= 1
        array[j + 1] = key
array = [1, 23, 21, 123, 5]
print('排序前的列表:{}'.format(array))
insertion(array)
print('排序后的列表:{}'.format(array))

 4、Python 快速排序

def partition(array, low, high):
    i = (low - 1)  # 最小元素索引
    pivot = array[high]  # 以列表右边数值为曲轴点

    for j in range(low, high):

        # 当前元素小于或等于 pivot,交换列表两元素位置
        if array[j] <= pivot:
            i = i + 1
            array[i], array[j] = array[j], array[i]
    # 将曲轴点插入到相应位置
    array[i + 1], array[high] = array[high], array[i + 1]
    # 返回曲轴点的位置
    return i + 1

 5、快速排序函数

def quick_Sort(array, low, high):
    if low < high:
        pi = partition(array, low, high)
        quick_Sort(array, low, pi - 1)
        quick_Sort(array, pi + 1, high)


array = [12,31,23,11,24,123,13,12]
print("排序前的数组:{}".format(array))
quick_Sort(array, 0, len(array) - 1)
print("排序后的数组:{}".format(array))

6、 选择排序
 

def selection(array):
    for i in range(len(array)):
        value = i
        for j in range(i + 1, len(array)):
            if array[j] < array[value]:
                value=j
        array[value], array[i] = array[i], array[value]


array = [12, 31, 23, 2, 5]
selection(array)
print("排序后的数组:{}".format(array))

7、冒泡排序

def BubbleSort(array):
    for i in range(len(array)):
        for j in range(0,len(array)-i-1):
            if array[j]>array[j+1]:
                temp=array[j]
                array[j]=array[j+1]
                array[j+1]=temp
array=[1,23,21,2,24]
print("排序前的数组:{}".format(array))
BubbleSort(array)
print("排序后的数组:{}".format(array))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值