摘要: 一、快速排序 核心:快排是一种采用分治思想的排序算法,大致分为三个步骤。 二、实现 实现方式一: 实现方式二: 实现方式三: main函数: 部分内容参考GitHub。 阅读全文
posted @ 2017-06-18 10:40 落下树的汪汪狗 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 一、插入排序 核心:通过构建有序序列,对于未排序序列,在已排序序列中从后向前扫描(对于单向链表则只能从前往后遍历),找到相应位置并插入。实现上通常使用in-place排序(需用到O(1)的额外空间) 性质: 交换操作和数组中倒置的数量相同 比较次数>=倒置数量,<=倒置的数量加上数组的大小减一 每次 阅读全文
posted @ 2017-06-18 10:21 落下树的汪汪狗 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 一、选择排序 核心:不断地选择剩余元素中的最小者。 性质: 比较次数=(N-1)+(N-2)+(N-3)+...+2+1~N^2/2 交换次数=N 运行时间与输入无关 数据移动最少 二、实现 实现方式一: 实现方式二: 定义一个类,进行存储元素和排序、显示等操作。 定义主函数入口main函数。 注意 阅读全文
posted @ 2017-06-18 10:00 落下树的汪汪狗 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 一、冒泡排序 核心:冒泡,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。 复杂度分析:平均情况与最坏情况均为 O(n2),使用了 temp 作为临时交换变量,空间复杂度为 O(1)。 二、编程实现 实现方式一: 实现方式二: 定义一个类,作为存储数组,并进行排序。 定义一个主程 阅读全文
posted @ 2017-06-18 09:30 落下树的汪汪狗 阅读(762) 评论(0) 推荐(0) 编辑