美文网首页
python插入排序(insert sort)

python插入排序(insert sort)

作者: sixiyizai | 来源:发表于2019-01-15 02:24 被阅读0次

插入排序输出到console带颜色字体展示插入时数据交换


图片


insert_sort.gif

插入排序算法

    def sort_a(arr):
        """插入排序"""
        arr = copy.deepcopy(arr)
        for i, cursor in enumerate(arr):
            pos = i
            while pos > 0 and arr[pos - 1] > cursor:
                arr[pos] = arr[pos - 1]
                pos = pos - 1
            arr[pos] = cursor
        return arr

动态显示插入动作代码

# coding:utf-8
"""
author: Allen
datetime: 
python version: 3.x
summary: 
install package:
"""
from typing import List
import random
from colorama import Fore
import copy


class GenData(object):
    def __init__(self):
        pass

    @staticmethod
    def random_list(start: int = 0, end: int = 10, step: int = 1):
        """生成随机列表"""
        seq = list(range(start, end, step))
        random.shuffle(seq)
        return seq


class ConsolePrint(object):
    @staticmethod
    def annotation_seq(seq: List, index: int):
        """带颜色打印字体"""
        return ' '.join([Fore.RESET + str(d) if i != index else Fore.RED + str(d) for i, d in enumerate(seq)])

    @staticmethod
    def cover_print(data):
        print("\r\r{d}".format(d=str(data).strip()), end='')



class InsertSort(object):
    def __init__(self):
        pass

    @staticmethod
    def sort_a(arr):
        """插入排序"""
        arr = copy.deepcopy(arr)
        for i, cursor in enumerate(arr):
            pos = i
            while pos > 0 and arr[pos - 1] > cursor:
                arr[pos] = arr[pos - 1]
                pos = pos - 1
            arr[pos] = cursor
        return arr

    @staticmethod
    def sort_a_draw(arr, sleep=1):
        """console口打印排序时候数据的移位"""
        arr = copy.deepcopy(arr)
        for i, cursor in enumerate(arr):
            pos = i
            InsertSort._annotation_p(arr, pos=pos, cursor=cursor)
            while pos > 0 and arr[pos - 1] > cursor:
                InsertSort._annotation_p(arr, pos=pos, cursor=cursor)
                arr[pos] = arr[pos - 1]
                InsertSort._annotation_p(arr, pos=pos, cursor=cursor)
                pos = pos - 1
                time.sleep(sleep)
            InsertSort._annotation_p(arr, pos=pos, cursor=cursor)
            arr[pos] = cursor
            InsertSort._annotation_p(arr, pos=pos, cursor=cursor)
            time.sleep(sleep)
        return arr

    @staticmethod
    def _annotation_p(arr, pos, cursor):
        tmp_arr = copy.deepcopy(arr)
        tmp_arr[pos] = cursor
        ConsolePrint.cover_print(ConsolePrint.annotation_seq(tmp_arr, index=pos))


if __name__ == '__main__':
    seq = GenData.random_list()
    res = InsertSort.sort_a_draw(seq)

相关文章

  • 03_插入排序

    def insert_sort(data): ''' 插入排序 :paramdata: :return: ...

  • python插入排序(insert sort)

    插入排序输出到console带颜色字体展示插入时数据交换 图片 插入排序算法 动态显示插入动作代码

  • 插入排序 insert sort

    插入排序 时间复杂度(平均、最坏)O(n^2), 最好时间复杂度O(n) 空间复杂度为O(1) 稳定性:稳定 算法...

  • Insertion sort

    python实现: def insert_sort(A):for i in range(1, len(A)):k...

  • 算法之插入排序

    算法之插入排序 一:基本概念插入排序(Insert Sort),每次将一个待排序的数据元素,插入到前面已经排好序的...

  • 排序算法插入排序

    插入排序(Insert Sort)直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记...

  • python实现插入排序(InsertSort)

    python实现【插入排序】 算法原理及介绍 插入排序(Insertion-Sort)的算法描述是一种简单直观的排...

  • sort

    bubble_sort: select_sort: insert_sort: merge_sort: quick_...

  • (一)插入排序算法

    1.直接插入排序(Straight Insert Sort) 将一个记录插入到已经排序好的有序表中,从而得到一个新...

  • INSERT SORT

网友评论

      本文标题:python插入排序(insert sort)

      本文链接:https://www.haomeiwen.com/subject/mqxedqtx.html