#/usr/bin/env python
#coding:utf-8
#@auther="livermorium"
'''
选择排序
从数据中选择最小值,排在位置首位
再从剩余未排序数据中选择最小值
'''
'''
冒泡排序法
比较是相邻的两个元素比较,把较大或较小的排在前面,这样经过一轮就可以把较大或较小的元素排在最后面
重复上述过程,直到剩余一个元素
''' import random class SelectionSort(): def __init__(self,data):
self.data=data
self.SortResults=[]
self.Sort()
def Sort(self):
i=0
Length=len(self.data)
while i< Length:
minIndex=self.data.index(min(self.data))##寻找最小值得下标,之所以选择下标是为了防止存在重复数据造成排序不全
self.SortResults.append(self.data[minIndex])##把最小值添加到结果表中
#print(self.SortResults)
self.data.pop(minIndex)##删除最小值
#print(self.data)
i=i+1
return self.SortResults class BubbleSort(): def __init__(self,data):
self.data=data
self.SortResults=[]
self.Sort() def Sort(self):
for x in range(len(self.data)): for y in range(x,len(self.data)): ##冒泡法排序
if self.data[x] > self.data[y]:
temp=self.data[x]
self.data[x]=self.data[y]
self.data[y]=temp
#print(self.data)
self.SortResults =self.data
return self.SortResults ####测试 if __name__=="__main__":
print("------选择排序法———————————————")
TestData=[random.randint(1,100) for x in range(9)]
print("原始数据(1):",TestData)
selSort=SelectionSort(TestData)
print("排序结果(1):",selSort.SortResults)
TestData=[11,11,10,9,8,7,8,10]
print("存在重复数值的数据(2):",TestData)
selSort=SelectionSort(TestData)
print("数据(2)排序结果:",selSort.SortResults)
print('\n')
print("------冒泡排序法———————————————")
TestData=[random.randint(1,100) for x in range(9)]
print("原始数据(1):",TestData)
BulSort=BubbleSort(TestData)
print("排序结果(1):",BulSort.SortResults)

python 实现排序算法(三)-选择排序和冒泡排序的更多相关文章

  1. Python排序算法之选择排序定义与用法示例

    Python排序算法之选择排序定义与用法示例 这篇文章主要介绍了Python排序算法之选择排序定义与用法,简单描述了选择排序的功能.原理,并结合实例形式分析了Python定义与使用选择排序的相关操作技 ...

  2. 八大排序算法~简单选择排序【记录下标k变量的作用】

    八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...

  3. 【DS】排序算法之选择排序(Selection Sort)

    一.算法思想 选择排序是一种简单直观的排序算法.它的工作原理如下: 1)将序列分成两部分,前半部分是已经排序的序列,后半部分是未排序的序列: 2)在未排序序列中找到最小(大)元素,放到已排序序列的末尾 ...

  4. 排序算法总结------选择排序 ---javascript描述

    每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...

  5. 排序算法之选择排序的python实现

    选择排序算法的工作原理如下: 1. 首先在序列中找到最小或最大元素,存放到排序序列的前或后. 2. 然后,再从剩余元素中继续寻找最小或最大元素. 3. 然后放到已排序序列的末尾. 4. 以此类推,直到 ...

  6. Python排序算法之选择排序

    选择排序 选择排序比较好理解,好像是在一堆大小不一的球中进行选择(以从小到大,先选最小球为例): 1. 选择一个基准球 2. 将基准球和余下的球进行一一比较,如果比基准球小,则进行交换 3. 第一轮过 ...

  7. 八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  8. Java排序算法之选择排序

    一.算法原理 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据}:第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据,将它与arrr[0]交换:第2趟,在待排序 ...

  9. 我的Java开发学习之旅------>Java经典排序算法之选择排序

    一.算法原理 对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置, 接着第二次比较,前面"后一个元素"现变成了"前一个元素& ...

随机推荐

  1. c++内存泄漏原因及解决办法(智能指针)

    内存泄漏 由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费. 内存泄露的 ...

  2. day01 计算机的基础知识

    1.编程语言: 人与计算机沟通的表达方式. 2.编程: 程序员用计算机能理解的表达方式(编程语言)把程序员想让计算机实现的功能写到文件里,这些文件称之为程序. 3.计算机硬件组成: 控制器:是计算机的 ...

  3. webpack 提取 manifest 文件

    当 webpack 生成 bundle 时, 它同时维护一个 manifest 文件.你可以在生成的 vendor bundle 中找到它.manifest 文件描述了哪些文件需要 webpack 加 ...

  4. node 学习资料

    Node 学习资料: 资料名称 网址 Node.js 中文API文档 http://nodejs.cn/api/ Node 菜鸟教程 http://www.runoob.com/nodejs/node ...

  5. Linux 下的三种时间介绍

    Linux 下的三种时间介绍: Access Time:简写为atime,表示文件访问的时间,当文件内容被访问时,更新atime时间 Modify Time:简写为mtime,表示文件内容修改的时间, ...

  6. PHP 中如何创建和修改数组?

    PHP中使用array来创建一个数组:array( key=>value , key=>value …… )用方括号的语法来修改数组:$arr[] = value 例如:$arr = ar ...

  7. 【springboot】之将properties配置转为bean

    将springboot里面非application.yml 或者application.properties 里面的key-value转为JavaBean /** * @Describe: DataS ...

  8. jar打包混淆上传全自动日志

    第一步: Java的pom.xml文件中要加入导出lib的插件.如下: <build> <plugins> <plugin> <groupId>org. ...

  9. 安装包制作工具 SetupFactory 详解

    Setup Factory 是一个强大的安装程序制作工具.提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序.可建立快捷方式,也可直接在 Windows 系统的注册表加入内容 ...

  10. Jenkins小试

    之前有提到和同事搭建了个Git+Gerrit+Jenkins环境,可惜都在一台机器上,中间IT重装系统后就杯具了,没有备份,只好重来. 6月份项目发布了首个Open API,那时候建了个api uni ...