#!usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2019/3/28 10:26
# @Author : Yosef-夜雨声烦
# @Email : wurz529@foxmail.com
# @File : sort.py
# @Software : PyCharm def bubble_sort(arr):
'''
冒泡排序
:param arr:
:return:
'''
count = len(arr)
for i in range(count):
for j in range(count - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(arr) def selection_sort(arr):
"""
选择排序
:param arr:
:return:
"""
count = len(arr)
for i in range(0, count - 1):
index = i
for j in range(i + 1, count):
if arr[index] > arr[j]:
index = j
arr[i], arr[index] = arr[index], arr[i]
print(arr) def insert_sort(arr):
'''
插入排序
:param arr:
:return:
'''
for i in range(1, len(arr)):
j = i - 1
key = arr[i]
while j >= 0:
if arr[j] > key:
arr[j + 1] = arr[j]
arr[j] = key
j -= 1
print(arr) def quick_sort(data, start, end):
'''
快速排序
:param data:
:param start:
:param end:
:return:
'''
i = start
j = end
# i与j重合时,一次排序结束
if i >= j:
return
# 设置最左边的数为基准值
flag = data[start]
while i < j:
while i<j and data[j] >= flag:
j -= 1
# 找到右边第一个小于基准的数,赋值给左边i。此时左边i被记录在flag中
data[i] = data[j]
while i<j and data[i] <= flag:
i += 1
# 找到左边第一个大于基准的数,赋值给右边的j。右边的j的值和上面左边的i的值相同
data[j] = data[i]
# 由于循环以i结尾,循环完毕后把flag值放到i所在位置。
data[i] = flag
# 除去i之外两段递归
quick_sort(data, start, i-1)
quick_sort(data, i+1, end) arr = [3, 6, 4, 2, 11, 10, 5]
quick_sort(arr,0,len(arr)-1)
print(arr)

基于python的几种排序算法的实现的更多相关文章

  1. Python学习(三) 八大排序算法的实现(下)

    本文Python实现了插入排序.基数排序.希尔排序.冒泡排序.高速排序.直接选择排序.堆排序.归并排序的后面四种. 上篇:Python学习(三) 八大排序算法的实现(上) 1.高速排序 描写叙述 通过 ...

  2. 排序算法的实现之Javascript(常用)

    排序算法的实现之Javascript 话不多说,直接代码. 1.冒泡排序 1.依次比较相邻的两个数,如果前一个比后一个大,则交换两者的位置,否则位置不变 2.按照第一步的方法重复操作前length-1 ...

  3. 基于python的七种经典排序算法

    参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. ...

  4. 基于python的七种经典排序算法(转)

    一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性:经过某种排序后,如果两个 ...

  5. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  6. 各类排序算法的实现C#版

    using System;using System.CodeDom;using System.Collections.Generic;using System.Linq;using System.Ru ...

  7. Javascript十大排序算法的实现方法

    上一篇中,实现了Javascript中的冒泡排序方法,下面把剩余的九种排序算法实现 选择排序: var array = []; for(var i=0;i<100000;i++){ var x ...

  8. python排序算法的实现-插入

    1.算法: 设有一组关键字{ K 1 , K 2 ,…, K n }:排序开始就认为 K 1 是一个有序序列:让 K 2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列:然后让 K ...

  9. Python之基本排序算法的实现

    import cProfile import random class SortAlgorithm: def __init__(self,unsortedlist=[]): self.unsorted ...

随机推荐

  1. [SoapUI] 如何让gzip和chunked的response显示出来 [设置Accept-Encoding为deflate]

    如果response的Content-Encoding是gzip或者Transfer-Encoding是chunked,在SoapUI里面是无法显示出来的. 解决办法:在Request的Header里 ...

  2. oracle 分页其实一个子查询就好了,没理解的自然只能见样学样

    .首先rownum是一个查询缓存级别的东西,所以以下写法是错误的 ; 因为rn其实不是student表的内容,看做一个缓存编号就好 但是有些人不服了,加个a.rn<= ;结果还是不行,这下相信了 ...

  3. kaggle-泰坦尼克号Titanic-3

    根据以上两篇的分析,下面我们还要对数据进行处理,观察Age和Fare两个属性,乘客的数值变化幅度较大!根据逻辑回归和梯度下降的了解,如果属性值之间scale差距较大,将对收敛速度造成较大影响,甚至不收 ...

  4. MarkDown语法练习笔记

    MarkDown使用规则 标题Markdown 支持两种标题的语法,类 Setext 和类 atx 形式 Setext 形式:用底线的形式 Selext形式采用: 1.最高阶标题(=)2.第二阶标题( ...

  5. 创建圆角 抛出一个错误:二元运算符“|”不能用于两个UIRectCorner操作数

    //        let beizer:UIBezierPath = UIBezierPath(roundedRect: btn5.bounds, byRoundingCorners: UIRect ...

  6. 咏南中间件修正了一处BUG,调用中间件插件会报:非法访问

    咏南中间件修正了一处BUG,调用中间件插件会报:非法访问将以下方法修改成如下的代码即可function TServerMethods1.GetSvrData(const accountNo, defi ...

  7. Sourcetree拉取推送问题

    以下sourcetree使用时出现的问题:可以暂时用删除passwd文件解决 拉取时账号密码输入错误 已经有一个远程仓库了,但是需要拉取另一个远程仓库时,提示URL 进入 C:\Users\用户名\A ...

  8. [PHP]socket的连接超时 与 读取/写入超时

    socket处理时有两种超时 , 分为连接超时 和 读取/写入数据超时 1. stream_socket_client 函数中的超时时间是连接超时 , 默认是php.ini中的default_sock ...

  9. Radius 认证协议介绍-兼rfc导读

    老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ...

  10. SQL Server数据类型总结

    1.char char [(n)]存储固定长度的非Unicode字符串数据.n定义字符串长度,并且必须是1到8,000之间的值.存储大小为n个字节. 2.varchar varchar [(n | m ...