选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。[1]
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{49 27 65 97 76 12 38}
  第1趟:12与49交换:12{27 65 97 76 49 38}
  第2趟:27不动 :12 27{65 97 76 49 38}
  第3趟:65与38交换:12 27 38{97 76 49 65}
  第4趟:97与49交换:12 27 38 49{76 97 65}
  第5趟:76与65交换:12 27 38 49 65{97 76}
  第6趟:97与76交换:12 27 38 49 65 76 97 完成

写一个程序,对任意数组做从小到大排列:

 #!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author:show530 def find_minmunber(list):
smallest_munber=list[0]
smallest_index=0
for i in range(1,len(list)):
if list[i]<smallest_munber:
smallest_munber=list[i]
smallest_index=i
return smallest_index def from_small_arr(arr):
new_arr=[]
for i in range(len(arr)):
min_munber=find_minmunber(arr)
new_arr.append(arr.pop(min_munber))
return new_arr my_list=[9,24,56,97,82,1,3,6,997,642,352]
print("列表从小到大排列为:")
print(from_small_arr(my_list))
C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/DAY1/SX.py

列表从小到大排列为:
[1, 3, 6, 9, 24, 56, 82, 97, 352, 642, 997] Process finished with exit code 0

换成从大到小排列:

 #!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Author:show530 def find_max_munber(list):
max_munber=list[0]
max_munber_index=0
for i in range(1,len(list)):
if list[i]>max_munber:
max_munber=list[i]
max_munber_index=i
return max_munber_index def form_large_small(arr):
new_arr=[]
for i in range(len(arr)):
largest_number=find_max_munber(arr)
new_arr.append(arr.pop(largest_number))
return new_arr my_list=[7,56,89,41,8,2,46,92,478,1,896,74,66]
print("数组从大到小排列顺序为:")
print(form_large_small(my_list))
C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/DAY1/sx2.py

数组从大到小排列顺序为:
[896, 478, 92, 89, 74, 66, 56, 46, 41, 8, 7, 2, 1] Process finished with exit code 0

python学习(6)选择排序算法简单代码的更多相关文章

  1. Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋 ...

  2. C++/Python冒泡排序与选择排序算法详解

    冒泡排序 冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样. ...

  3. 算法学习之选择排序算法的python实现

    ——参考自<算法图解> def findSmallest(arr): # 假设第一个元素最小 smallest = arr[0] smallest_index = 0 for i in r ...

  4. 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现

    选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ...

  5. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  6. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  7. python选择排序算法总结

    选择排序算法: a=[6,5,4,3,2,1] 算法思路: 第一步:在列表的第一个位置存放此队列的最小值 声明一个变量min_index等于列表的第一个坐标值0 从第一个位置0坐标开始,和它后边所有的 ...

  8. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  9. [Swift]八大排序算法(三):选择排序 和 简单选择排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

随机推荐

  1. MySQL之性能优化

    查看执行计划explain     1.1 Explain命令:它可以对select语句进行分析,并输出select执行的详细信息,以对开发人员针对性优化  1.2 Explain的用法:在selec ...

  2. json中含有换行符'\r','\n'的处理

    一.josn简易说明  json是一种轻量级的数据交换格式,是一系列格式字符串.在数据交换中,经常会使用到,具有易读性,轻量级.很多地方会使用到,用处广泛.如下:(截取的一段json体) " ...

  3. 低功耗蓝牙(BLE)——概述

    1. 概述   蓝牙协议是由SIG制定并维护的无线通信协议,蓝牙协议栈是蓝牙协议的具体实现.各厂商都根据蓝牙协议实现了自己的一套函数库--蓝牙协议栈,所以不同厂商的蓝牙协议栈之间虽然存在差别,但是都遵 ...

  4. Scrapy深度和优先级

    一.深度 配置文件 settings.py DEPTH_LIMIT = 5 二.优先级 配置文件 DEPTH_PRIORITY=1 优先级为正数时,随着深度越大,优先级越低 源码中,优先级 reque ...

  5. restframework 分页组件、响应器

    一.分页组件 1.PageNumberPagination a.全局配置 导入模块 from rest_framework.pagination import PageNumberPagination ...

  6. 「 神器 」资源管理神器Clover,风一样的效率

    开开心心地上班,这时你得打开我的电脑,点进D盘,打开某个项目;然后还得打开XX文档,还有- 最后的最后,你的桌面便成了这个样子 每天你都得天打开多个文件夹,切换时找文件找的晕头转向而烦恼. 每天层层深 ...

  7. 【javaScript】获取某年某月的的最后一天(即当月天数) 妙用

    javaScript里 面的new Date("xxxx/xx/xx")这个日期的构造方法有一个妙处,当你传入的是"xxxx/xx/0"(0号)的话,得到的日期 ...

  8. 【java面试】Web篇

    1.AJAX创建步骤 step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象:  step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法.URL以及验证信息:  s ...

  9. .net core之编辑json配置文件

    .net core之编辑json配置文件 引言 最近在具体项目开发应用中,项目采用的json格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standa ...

  10. generic

    是什么 算法实现时保有待定类型的参数. 为什么 一份代码用于多个算法(当算法中只数个类型不同的时候) 可重新性 很多常用算法和容器数据结构都可以type-generic的方式实现 why not 许多 ...