(知识盘点)如何用python实现各种数据结构

这里主要分享的是用python实现各种数据结构,快速排序、选择排序、插入排序、归并排序、堆排序heapq模块等相关资料,想要了解更多关于python知识以及领取免费资料的请点击。

目录

快速排序

选择排序

插入排序

归并排序

堆排序heapq模块

队列

二分查找


快速排序

1

2

3

4

5

6

7

8

def quick_sort(_list):

        if len(_list) < 2:

            return _list

        pivot_index = 0

        pivot = _list(pivot_index)

        left_list = [i for i in _list[:pivot_index] if i < pivot]

        right_list = [i for i in _list[pivot_index:] if i > pivot]

    return quick_sort(left) + [pivot] + quick_sort(right)

选择排序

1

2

3

4

5

6

7

8

9

def select_sort(seq):

    n = len(seq)

    for i in range(n-1)

    min_idx = i

        for j in range(i+1,n):

            if seq[j] < seq[min_inx]:

                min_idx = j

        if min_idx != i:

            seq[i], seq[min_idx] = seq[min_idx],seq[i]

插入排序

1

2

3

4

5

6

7

8

9

10

def insertion_sort(_list):

    n = len(_list)

    for i in range(1,n):

        value = _list[i]

        pos = i

        while pos > 0 and value < _list[pos - 1]

            _list[pos] = _list[pos - 1]

            pos -= 1

        _list[pos] = value

        print(sql)

归并排序

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

def merge_sorted_list(_list1,_list2):   #合并有序列表

       len_a, len_b = len(_list1),len(_list2)

       a = b = 0

       sort = []

       while len_a > a and len_b > b:

           if _list1[a] > _list2[b]:

               sort.append(_list2[b])

               b += 1

           else:

               sort.append(_list1[a])

               a += 1

       if len_a > a:

           sort.append(_list1[a:])

       if len_b > b:

           sort.append(_list2[b:])

       return sort

   def merge_sort(_list):

       if len(list1)<2:

           return list1

       else:

           mid = int(len(list1)/2)

           left = mergesort(list1[:mid])

           right = mergesort(list1[mid:])

           return merge_sorted_list(left,right)

堆排序heapq模块

1

2

3

from heapq import nsmallest

def heap_sort(_list):

    return nsmallest(len(_list),_list)

1

2

3

4

5

6

7

8

9

10

11

12

from collections import deque

class Stack:

    def __init__(self):

        self.s = deque()

    def peek(self):

        p = self.pop()

        self.push(p)

        return p

    def push(self, el):

        self.s.append(el)

    def pop(self):

        return self.pop()

队列

1

2

3

4

5

6

7

8

from collections import deque

class Queue:

    def __init__(self):

        self.s = deque()

    def push(self, el):

        self.s.append(el)

    def pop(self):

        return self.popleft()

二分查找

1

2

3

4

5

6

7

8

9

10

def binary_search(_list,num):

    mid = len(_list)//2

    if len(_list) < 1:

        return Flase

    if num > _list[mid]:

        BinarySearch(_list[mid:],num)

    elif num < _list[mid]:

        BinarySearch(_list[:mid],num)

    else:

        return _list.index(num)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值