博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【DataStructure In Python】Python实现各种排序算法
阅读量:5921 次
发布时间:2019-06-19

本文共 1850 字,大约阅读时间需要 6 分钟。

使用Python实现直接插入排序、希尔排序、简单选择排序、冒泡排序、快速排序、归并排序、基数排序。

#! /usr/bin/env python# DataStructure Sort# InsertSortdef InsertSort(lst, end=None, beg=0, space=1):    if end is None:        end = len(lst)    for i in range(beg, end, space):        tmp = lst[i]        j = i-space        while j>=beg and tmp < lst[j]:            lst[j+space] = lst[j]            j -= space        lst[j+space] = tmp# ShellSortdef ShellSort(lst):    spaces = [5,3,1]    # 5->3->1    for space in spaces:        for i in range(space):            InsertSort(lst, len(lst), i, space)        # print lst# BubbleSortdef BubbleSort(lst):    for i in range(len(lst)-1, 0, -1):        flag = 0        for j in range(1, i+1):            if lst[j-1] > lst[j]:                tmp = lst[j-1]                lst[j-1] = lst[j]                lst[j] = tmp                flag = 1        if flag == 0:            return# QuickSortdef QuickSort(lst, l, r):    i=l    j=r    if l
i and lst[j]>tmp: j -= 1 if i
<< 1 # print lst InsertSort(lst, length)# BaseSortdef BaseSort(lst): maxnum = max(lst) mod = 1 barrel = [[] for i in range(10)] # [[]] * 10 not work while mod <= maxnum: mod *= 10 length = len(lst) for i in range(length): index = lst[0] % mod index = index*10 // mod barrel[index].append(lst.pop(0)) for i in range(10): length = len(barrel[i]) for j in range(length): lst.append(barrel[i].pop(0)) # print lstif __name__ == "__main__": nums = [49, 38, 65, 97, 76, 13, 27, 49, 55, 4] # InsertSort(nums) # BubbleSort(nums) # QSort(nums) # SelectSort(nums) # ShellSort(nums) # MergeSort(nums) BaseSort(nums) print nums

 

转载于:https://www.cnblogs.com/bombe1013/p/3591153.html

你可能感兴趣的文章
[译]探索 ECMAScript 装饰器
查看>>
使用Phaser开发你的第一个H5游戏(一)
查看>>
Retrofit与LiveData结合
查看>>
React中组件通信的几种方式
查看>>
比特币源码分析-boost::signal的使用
查看>>
Java高级工程师——面试总结
查看>>
iOS App 稳定性指标及监测
查看>>
JAVASCRIPT. BUT LESS IFFY
查看>>
Swift 4官方文档中文版 The Basic(下)
查看>>
前端每周清单半年盘点之 Vue.js 篇
查看>>
算法:二分查找
查看>>
Reflected File Download Attack
查看>>
RAC的使用心得
查看>>
「译」内存管理碰撞课程
查看>>
数据结构系列全集
查看>>
使用jupyter(IPython)开发opencv
查看>>
写一个最简陋的node框架(2)
查看>>
并非 Null Object 这么简单
查看>>
聊聊rocketmq的RequestTask
查看>>
聊聊springcloud的featuresEndpoint
查看>>