概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说的八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基 ...
分类:
编程语言 时间:
2017-10-29 17:32:24
阅读次数:
216
(1)直接插入排序:一般插入排序,比较是从有序序列的最后一个元素开始,如果比它大则直接插入在其后面,否则一直往前比。 如果找到一个和插入元素相等的,那么就插入到这个相等元素的后面。 插入排序是 稳定的。 (2)希尔排序:希尔排序是按照不同步长对元素进行插入排序,一次插入排序是稳定的,不会改变相同元素 ...
分类:
编程语言 时间:
2017-10-13 00:37:16
阅读次数:
201
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较 ...
分类:
编程语言 时间:
2017-09-30 16:15:57
阅读次数:
223
A、快速排序 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换; 4)从i开始向后搜索,即由前开始向后搜索 ...
分类:
编程语言 时间:
2017-09-29 00:24:55
阅读次数:
228
归并类的排序算法 归并:将两个或两个以上的有序表组合成一个新的有序表。 内部排序中,通常采用的是 2-路归并排序。即:将两个位置相邻的记录有序子序列归并为一个记录有序的序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 ...
分类:
编程语言 时间:
2017-09-10 15:05:48
阅读次数:
110
本文节选自:http://python.jobbole.com/82270/ 本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序 ...
分类:
编程语言 时间:
2017-09-06 10:03:05
阅读次数:
226
快排就是折中时间和空间的一个算法,可以说是较为高效的算法,平时用用他没啥大问题。 自己也看到个比较形象生动的例子,为了让大家能够看的比较清楚,我就直接转过来给大家看了哈!但是我使用python实现的: 注意以下除了实现代码,其他为转发,详见页末! 假设我们现在对“6 1 2 7 9 3 4 5 10 ...
分类:
编程语言 时间:
2017-09-04 11:57:05
阅读次数:
318
1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数 ...
分类:
编程语言 时间:
2017-08-30 20:51:11
阅读次数:
218
本文讲述时间复杂度为n*logn的排序算法:归并排序、快速排序、堆排序以及希尔排序的原理、Java实现以及变形应用。 一、归并排序 原理:把两个有序数列合并为一个有序数列。需递归实现。 Java实现: 二、快速排序 原理:每一次将一个数放在一个左边的数全部比它小,且右边的数全部比它大的位置,然后递归 ...
分类:
编程语言 时间:
2017-08-30 10:00:28
阅读次数:
276
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基 ...
分类:
编程语言 时间:
2017-08-21 22:21:03
阅读次数:
267