《面试》 几种经典的简单的排序方法(冒泡,选择,插入)python实现
来源:互联网 发布:老七的淘宝店 编辑:程序博客网 时间:2024/06/07 03:44
感谢博主 http://blog.csdn.net/l953972252/article/details/51284884
该博文以C++编写,本文python 编写。
选择排序
思想:通过遍历所有元素来调整位置
首先遍历第一位元素,将第一位元素和其余位置的元素进行比较,如果其小于遍历元素则位置不改变,若其大于遍历元素则交换位置,继续遍历下去,找到最小的元素,放置在索引[0]处。再开始遍历第二个元素,以此类推。
代码示例:
def xuanze(l): i = 0 while i < len(l): j = i + 1 while j < len(l): if l[i] > l[j]: c = l[i] l[i] = l[j] l[j] = c j = j + 1 i = i + 1 return lprint xuanze(m)
结果
原数据 m = [2,5,3,6,1]
排序过程
[2, 5, 3, 6, 1]
[2, 5, 3, 6, 1]
[2, 5, 3, 6, 1]
[1, 5, 3, 6, 2]
[1, 3, 5, 6, 2]
[1, 3, 5, 6, 2]
[1, 2, 5, 6, 3]
[1, 2, 5, 6, 3]
[1, 2, 3, 6, 5]
[1, 2, 3, 5, 6]
冒泡排序
思想:每两个相临近的元素进行比较,若左边的元素比右边的元素大,则两个元素交换位置,比较窗口是一步一步遍历的移向数组的最后一位。
def maopao(l): i = 0 while i <len(l): j = 0 while j < len(l)-1: if l[j] > l[j+1]: c = l[j] l[j] = l[j+1] l[j+1] = c j = j + 1 i = i + 1 return lprint maopao(m)
[2, 5, 3, 6, 1]
[2, 3, 5, 6, 1]
[2, 3, 5, 6, 1]
[2, 3, 5, 1, 6]
[2, 3, 5, 1, 6]
[2, 3, 5, 1, 6]
[2, 3, 1, 5, 6]
[2, 3, 1, 5, 6]
[2, 3, 1, 5, 6]
[2, 1, 3, 5, 6]
[2, 1, 3, 5, 6]
[2, 1, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
[1, 2, 3, 5, 6]
扑克牌法排序——插入排序
第一步 把a[0]认为一个有序数组,剩下的a[1]-a[N-1]为无序的数组
第二步 将a[1]加入到有序数组中,并利用冒泡思想交换成有序数组
第三步 将a[i]加入到有序数组,比较,直到把所有的无序数组都加入到有序数组中排序完成
无序数组: 2 | 5 4 7 1 6 8 3
遍历1次后: 2 5 | 4 7 1 6 8 3
遍历2次后: 2 4 5 | 7 1 6 8 3
遍历3次后: 2 4 5 7 | 1 6 8 3
def charu(l): i = 0 while i < len(l) - 1: j = i + 1 if l[i] > l[i+1]: while j > 0 : if l[j] < l[j-1]: tmmp = l[j-1] l[j-1] = l[j] l[j] = tmmp j = j -1 i = i + 1 print l
输入 [2,5,3,6,1]
第1次遍历 [2, 3, 5, 6, 1]
第2次遍历 [2, 3, 5, 1, 6]
第3次遍历 [2, 3, 1, 5, 6]
第4次遍历 [2, 1, 3, 5, 6]
第5次遍历 [1, 2, 3, 5, 6]
- 《面试》 几种经典的简单的排序方法(冒泡,选择,插入)python实现
- 001-简单的java代码实现几种排序算法(插入,快速,冒泡,选择)
- 关于几种简单的排序算法-插入、冒泡、选择
- java 几种简单的排序(插入排序,冒泡排序,选择排序)
- 三种简单排序的实现(冒泡排序,选择排序,插入排序 )
- java几种基本的排序方法,快速排序,冒泡排序,选择排序,插入排序
- C++几种简单排序及类的操作(冒泡,选择,插入)
- java实现最基本的几种排序算法(冒泡,选择,插入)
- 数据结构 三种简单的排序(插入、选择、冒泡)
- Java实现的简单排序(冒泡排序,选择排序和插入排序)
- 几种常见排序算法的实现(冒泡法,选择法,插入法,快速排序、堆排序)
- 几种基本排序的实现:选择排序,冒泡排序,插入排序,堆排序,快速排序,归并排序
- java常用的几种排序(冒泡排序 选择 插入排序 /快速排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 简单的排序--冒泡、选择、插入
- 几种排序的java实现:选择、插入、冒泡、快排
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 冒泡-选择-插入排序算法的实现
- hdu--1213 How Many Tables(并查集)
- OpenGL学习笔记1:OpenGL概述
- JVM 中的内存如何分配及相应的命令设置
- 数据库存储过程、事物、索引、优化方面等
- 数值计算方法:二分法求解方程的根(伪代码 python c/c++)
- 《面试》 几种经典的简单的排序方法(冒泡,选择,插入)python实现
- Linux运维进阶-文档总结-memcache的实现
- HDFS高可用配置
- Petya and Exam(Codeforces Round #425 (Div. 2))
- 2017.07.24工作日记
- TPshop学习(1)内容介绍
- 二叉树前序,中序,后序的遍历【递归(借用栈实现)和非递归】
- 题目1022:游船出租
- 【JavaScript数据类型转换】