#/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. Bundle类解读

    1.Bundle bundle = Platform.getBundle("org.eclipse.ui.views"); Platform是eclipse平台运行时的核心类,它是 ...

  2. webpack 的 入口(Entry)、输出(Output)

    入口(Entry) 入口定义了我们的应用代码开始执行的那个文件,webpack从这个文件开始打包.你能定义一个入口点(常见于单页应用 - Single-Page Application), 或者多个入 ...

  3. git刚初始化项目的操作

    # Command line instructions ## Git global setup git config --global user.name "iback" git ...

  4. PCA原理解释(二)

    PCA在做数据处理,一般会有一个数据预处理,其中一个目标就是将取数据特征向相关性. 为什么要去特征的相关性? 因为数据如果有相关性,在学习的时候是冗余的,徒增学习成本:所以对于数据处理(也称之为白化, ...

  5. Excel文件转为其他格式文件

    引用:Spire.XLS 是一个 Excel 文件的读写库,无需安装office,使用起来也挺方便的.Spire还有一些其他的库(Spire.Doc,Spire.Pdf……) 说明:Spire.XLS ...

  6. Zookeeper 重连机制

    Zookeeper 重连机制 public class ZKConnectSessionWatcher implements Watcher { public final static String ...

  7. Docker中使用nginx镜像

    1.到网易蜂巢查看nginx https://c.163yun.com/hub#/m/home/ 复制nginx镜像地址为:docker pull hub.c.163.com/library/ngin ...

  8. Typescript学习总结之类

    1. 类的定义和使用 class Student { name; say() { console.log(this.name + " saying"); } } var s1 = ...

  9. C# MD5位加密

    /// <summary> /// 方法一:通过使用 new 运算符创建对象 /// </summary> /// <param name="strSource ...

  10. Spring Cloud(Dalston.SR5)--Hystrix 断路器-缓存

    在 Spring Cloud 中可以使用注解的方式来支持 Hystrix 的缓存,缓存与合并请求功能需要先初始化请求上下文才能实现,因此,必须实现 javax.servlet.Filter 用于创建和 ...