排序的基本概念 重点考察稳定性、排序趟数、时间复杂度和空间复杂度。 排序算法类型一:简单排序算法 1.简单选择排序 核心思想:每一趟排序,找到待排序序列中关键字最小的数据元素,将其与待排序序列中的第一个数据元素交换位置,并将其从下一趟待排序序列中移出,重复该过程,直到某趟排序时待排序序列中仅剩下两个 ...
分类:
编程语言 时间:
2018-06-05 21:07:39
阅读次数:
265
1. 冒泡排序的实现 冒泡排序是所有排序算法中最基本、最简单的一种。思想就是交换排序,通过比较和交换相邻的数据来达到排序的目的。 设数组的长度为N: 1、比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。 2、这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就 ...
分类:
编程语言 时间:
2018-06-04 14:32:58
阅读次数:
226
冒泡排序、选择排序、插入排序的实现 运行结果: ...
分类:
编程语言 时间:
2018-06-04 14:18:27
阅读次数:
113
?我们今天来看下异常处理,在看 C++ 的异常处理之前,先来看看 C 语言中的异常处理。那么什么是异常呢?在程序运行过程中可能会产生异常,异常(Exception)与 Bug 的区别是:异常是程序运行时可预料的执行分支,而 Bug 是程序中的错误,是不被预期的运行方式。下来我们来看看异常和 Bug 的对比:a> 异常比如运行时产生除 0 的情况,需要打开的外部文件不存在,数组访问时越界;b> Bug 是使用野指针,堆数组使用结束后未释放,选择排序无法处理长度为 0 的数组。在 C 语言中的经典处理方式为:if ... else ... 。if 语句中处理的是正常情况代码逻辑,else 语句中处理的是异常情况代码逻辑。
分类:
编程语言 时间:
2018-06-03 22:21:09
阅读次数:
226
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 通俗的解释 通俗的解释 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, ...
分类:
编程语言 时间:
2018-06-03 19:41:39
阅读次数:
225
阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 常见排序算法效率比较 搜索 树与树算法 二叉树 二叉树的遍历 补充: 什么是算法 算法是独立 ...
分类:
编程语言 时间:
2018-06-03 19:25:28
阅读次数:
267
选择排序 (不稳定) 选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择中,如果当前元素比一个元素大,而该小的元素又出现在一个和当前元素相等的元 ...
分类:
编程语言 时间:
2018-06-02 11:11:13
阅读次数:
198
插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入; 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序。 #插入排序就像是斗地主摸牌 1.算法描述: 2.算法属性: 算法时间复杂度:O(n^2) 具稳定性 3.代码实现 ...
分类:
编程语言 时间:
2018-06-01 00:22:26
阅读次数:
177
选择排序( Selection sort) 1.算法描述: 列表上的2个线性传递 在每次通过时,它会选择最小的值 用最后一个未分类元素交换它 2.算法属性: 算法时间复杂度:O(n**2) 不稳定性:list里面重复元素可能会因选择后改变前后顺序 O(1) 额外的空间 O(n2 ) 对比 O(n) ...
分类:
编程语言 时间:
2018-05-31 23:06:54
阅读次数:
219
经典的排序算法有八种,分别为: Ø 冒泡排序 Ø 选择排序 Ø 插入排序 Ø 归并排序 Ø 希尔排序 Ø 快速排序 Ø 堆排序 Ø 基数排序 其中冒泡排序、选择排序、插入排序称为三大基本排序。 虽然这三大基本排序算法时间复杂度都是O(n2),但是其实细细讨论之下,还是有各自的特点的。 基本思路: 假 ...
分类:
编程语言 时间:
2018-05-29 17:43:20
阅读次数:
133