文档章节

Python之冒泡排序和选择排序的比较

心_sui
 心_sui
发布于 2014/04/27 14:31
字数 346
阅读 868
收藏 2

     个人有时候会把冒泡排序和选择排序搞混了,因为感觉它们之间的差别也没太大,如下是冒泡排序Python的代码:

class BubbleSort:
    def __init__(self):
        self.initArr()
    def initArr(self):
        self.arrInfo = [60, 61, 27, 91, 92, 44, 13, 20, 24, 14]
    def bubbleSortFromStartToEnd(self):
        length = len(self.arrInfo)
        for i in range(length):
            for j in range(length-i-1):
                if self.arrInfo[j] > self.arrInfo[j+1]:
                    tmp = self.arrInfo[j]
                    self.arrInfo[j] = self.arrInfo[j+1]
                    self.arrInfo[j+1] = tmp
    def bubbleSortFromEndToStart(self):
        length = len(self.arrInfo)
        for i in range(0,length):
            for j in range(length-1,i,-1):
                if self.arrInfo[j] < self.arrInfo[j-1]:
                    tmp = self.arrInfo[j]
                    self.arrInfo[j] = self.arrInfo[j-1]
                    self.arrInfo[j-1] = tmp
    def printResult(self):
        print self.arrInfo
        self.bubbleSortFromEndToStart()
        print self.arrInfo
BubbleSort().printResult()

    如下是选择排序Python的代码:

class SelectSort:
    def __init__(self):
        self.initArr()
    def initArr(self):
        self.arrInfo = [60, 61, 27, 91, 92, 44, 13, 20, 24, 14]
    def selectSort(self):
        length = len(self.arrInfo)
        for i in range(length):
            position = i
            for j in range(i,length):
                if self.arrInfo[position] > self.arrInfo[j]:
                    position = j
            tmp = self.arrInfo[i]
            self.arrInfo[i] = self.arrInfo[position]
            self.arrInfo[position] = tmp
    def printResult(self):
        print self.arrInfo
        self.selectSort()
        print self.arrInfo
SelectSort().printResult()


    冒泡排序主要看bubbleSortFromEndToStart方法,该方法的效果和选择排序类似,唯一的区别是冒泡排序交换0~n-1次,而选择排序只交换一次。同时需要注意索引,排序里面很恶心的一点就是索引了,有时候按照伪代码来实现算法,效果不尽理想,一般很有可能也是出现在索引问题上。


© 著作权归作者所有

心_sui
粉丝 1
博文 4
码字总数 2332
作品 0
杭州
私信 提问
算法基础:五大排序算法Python实战教程

本文为 AI 研习社编译的技术博客,原标题 : A tour of the top 5 sorting algorithms with Python code 作者 | George Seif 翻译 | 邓普斯•杰弗 校对 | shunshun 整理 | 菠萝妹 原文链接:...

雷锋字幕组
01/07
0
0
GitHub热门项目:使用Python实现所有算法 - 知乎

来源:Python3X ID:python3xxx 作者:Python3X 学会了Python基础知识,想进阶一下,那就来点算法吧!毕竟编程语言只是工具,结构算法才是灵魂。 新手如何入门Python算法? 几位印度小哥在G...

Python头条
10/21
0
0
Python里面几种排序算法的比较,sorted的底层实现,虽然我们知道sorted的实现方式,但是却写不出这样的速度

算法与数据结构基础 原文链接:http://note.youdao.com/noteshare?id=7b9757930ce3cc9e0a5e61e4d0aa9ea2⊂=2726FFA02ADE4E74A302D8DA7646FB46 查找算法: 二分查找法: 简介:二分查找法又被...

雁横
2018/07/21
0
0
排序算法总结(python版)

经典排序算法总结与实现 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用Python实现了七大经典排序算法,包括冒泡排序,插入排序,选择排序,希尔排序,归并...

dby_freedom
2018/08/28
0
0
python进阶教程 第一步-何韬-专题视频课程

python进阶教程 第一步—269人已学习 课程介绍 Python 语言是计算机工程、大数据及人工智能等领域的基础性语言,广泛且深刻地影响着信息技术各领域的发展方式及速度,从软件开发到硬件开发、...

pkutao
2018/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
31分钟前
2
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
34分钟前
2
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
48分钟前
5
0
https证书买哪家好?有哪些供应商

在选购https证书前除了要了解类型外,还需要了解https证书供应商,毕竟不同的供应商,提供的产品质量与服务也是有差异的。今天小编就为大家讲讲https证书供应商方面的内容,希望各位会喜欢。...

安信证书
50分钟前
6
0
Zuul 配置

概述:zuul底层是基于servlet,是由一系列的filter链构成。 1、路由配置 a、单例serverId映射 zuul: routes: client-a: path: /client/** serviceId: client-a 意思是...

java框架开发者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部