摘要: 所谓排序,就是根据排序码的递增或者递减顺序把数据元素依次排列起来,使一组任意排列的元素变为一组按其排序码线性有序的元素。本文将介绍八种最为经典常用的内部排序算法的基本思想与实现,包括插入排序(直接插入排序,希尔排序)、选择排序(直接选择排序,堆排序)、交换排序(冒泡排序,快速排序)、归并排序 ...
分类:
编程语言 时间:
2018-07-15 21:13:45
阅读次数:
210
以下收集较好的排序算法文章: 八大排序算法的 Python 实现:http://python.jobbole.com/82270/ 视觉直观感受 7 种常用的排序算法:http://blog.jobbole.com/11745/ 可视化对比十多种排序算法(C#版):http://blog.jobbo ...
分类:
编程语言 时间:
2018-06-28 16:49:36
阅读次数:
147
一、基本思想 归并排序,将当前序列分成若干个小的有序序列,然后逐个合并成更大的有序序列。这里所谓的若干个小的有序序列即是将序列分割成n个长度为1的序列,然后两两合并成长度为二的有序序列。然后在将这长度为二的有序序列合并为长度为四的有序序列。依次类推,最终达到原序列长度,这样,排序就完成了。这其实是归 ...
分类:
编程语言 时间:
2018-06-22 01:15:31
阅读次数:
202
一、基本思想 堆排序是在选择排序基础上改进的排序,首先建立大根堆(即任意根节点的值均不小于子节点),然后每次取出堆顶元素,重新调整堆,然后再取出堆顶元素,直至最后一个堆元素被取出,则整个排序也就完成了。它的思想就是每次取出堆中的最大值,使其自然成序。 二、实现步骤 我们用一个数组来建立堆,期间会用到 ...
分类:
编程语言 时间:
2018-06-21 17:30:30
阅读次数:
162
一、基本思想 每次从待排记录中选出最小值放在有序记录的末尾。等每一个待排元素均被选出后,整个记录排序就完成了。 二、实现步骤 这里采用双向选择排序,每次从待排记录中选出最大值和最小值,最大值和待排记录的最后一位交换位置,最小值和待排记录的第一位交换位置。 注意,交换位置分如下情况: 1)最大值在最左 ...
分类:
编程语言 时间:
2018-06-20 14:32:47
阅读次数:
163
一、基本思想 快速排序是 一种基于交换的排序算法,是对冒泡排序的改进。它的基本思想是,通过一趟快速排序,将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分小;在分别对这两部分进行排序排序,直至整个序列有序。 二、操作步骤 1.将待排记录分隔成独立的两部分,其中一部分的关键字均比另一部分小。 ...
分类:
编程语言 时间:
2018-06-19 13:42:10
阅读次数:
147
快速排序 快速排序一轮排序的方式是找一个元素作为基准,然后将比它小的放到一边,比它大的放到另一边,对数组中所有元素进行这么一轮操作之后,这个基准元素就已经安放到“正确”的位置了,然后递归这个基准元素的左边和右边,一直递归到某次分组只有一个元素,就完成了整个数组的排序。 python代码如下: # c ...
分类:
编程语言 时间:
2018-06-07 14:12:30
阅读次数:
186
一、基本思想 冒泡排序是一种基于数值交换的排序,从第一个元素开始,与后面紧接着的一个元素比较,如果当前这个数更大,则交换两者的数值,那么值更大的元素就像泡泡一样往后走。第n趟排序即可使第n大元素从前往后走。进行n-1次这样的"冒泡操作"后,整个序列就有序了。 二、实现代码 三、测试结果 四、总结分析 ...
分类:
编程语言 时间:
2018-06-05 00:45:44
阅读次数:
180
分类 一、按照是否数据涉及内外存交换 1-内部排序:适用于记录个数不是很多的小文件 2-外部排序:适用于记录个数太多,不能一次将全部记录放入内存的大文件 二、按照策略划分内部排序方法 1-插入排序:直接插入排序与希尔排序 2-选择排序:直接选择排序与堆排序 3-交换排序:冒泡排序与快速排序 4-归并 ...
分类:
编程语言 时间:
2018-05-27 17:18:07
阅读次数:
252
一、基本思想 插入排序是一种简单直观的排序方法,基本思想是从待排记录中选择一个元素插入到已经有序的序列中。当待排记录中所有的元素都插入到有序序列中后,整个排序也就完成了。 二、实现方法 大致思路:从无序序列中选取一个元素,在有序序列中找到合适的位置i,有序序列中i及其以后的元素后移,给待插元素让位。 ...
分类:
编程语言 时间:
2018-05-27 14:49:08
阅读次数:
212