importjava.util.Random;/*** 排序测试类** 排序算法的分类如下: *1.插入排序(直接插入排序、折半插入排序、希尔排序); *2.交换排序(冒泡泡排序、快速排序);* 3.选择排序(直接选择排序、堆排序); *4.归并排序; *5.基数排序。** 关于排序方法的选择: *...
分类:
编程语言 时间:
2015-09-16 19:36:15
阅读次数:
413
堆排序,这个上座率也比较高。 一般出现的问题是这样的,在 N 个数中找到前 K 个最大(小)的。 这种问题就是比较典型的大(小)顶堆,即堆顶的数值大于堆的孩子。 堆排序主要有建堆,或者叫做调整堆,及取堆顶。...
分类:
编程语言 时间:
2015-09-16 14:24:17
阅读次数:
168
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较...
分类:
编程语言 时间:
2015-09-15 11:05:49
阅读次数:
252
选择排序的基本思想为:每一趟(例如第i趟)在后面的n-i+1(i=1,2,3,…...,n-1)个待排序元素中选取关键字最小的元素,作为有序序列的第i个元素,直到n-1趟做完,待排序元素只剩下一个,就不用选了,序列也排序完毕。选择排序主要有简单选择排序和堆排序,下面分别就这两种排序算法进行讨论。.....
分类:
编程语言 时间:
2015-09-13 21:39:04
阅读次数:
264
需要掌握的基础排序一、插入排序 1)直接插入排序2)希尔排序 二、交换排序 1)冒泡排序2)快速排序三、选择排序 1)简单选择排序2)堆排序四、归并排序一、插入排序 简单的理解就是遍历整个数组,在过程中对每个数都跟前面进行比较只要比它小就往前挪。 1) 直接插入排序实现 public ...
分类:
编程语言 时间:
2015-09-07 21:11:54
阅读次数:
198
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=...
分类:
编程语言 时间:
2015-09-06 22:48:21
阅读次数:
275
一、堆的概念: 堆是一种数据结构,是一棵像这样的完全二叉树,其任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]=0;i--) { maxHe...
分类:
编程语言 时间:
2015-09-05 23:34:57
阅读次数:
206
数据结构与算法——博文目录排序:归并排序希尔排序(shell)堆排序快速排序插入排序简单选择排序冒泡排序动态规划:动态规划1——最长公共子序列动态规划2——最长公共子串三角形问题——(递归,递推,动态规划)广度优先搜索和深度优先搜索:castle problem——(深度优先搜索,递归实现和stac...
分类:
编程语言 时间:
2015-09-04 22:33:04
阅读次数:
248
对几种排序方法进行简单总结。排序类型时间复杂度空间复杂度稳定性冒泡排序O(N^2)O(1)稳定插入排序O(N^2)O(1)稳定选择排序O(N^2)O(1)不稳定希尔排序O(N^2)O(1)不稳定堆排序O(NlogN)O(1)不稳定快速排序O(NlogN)O(logN)不稳定归并排序O(NlogN)O...
分类:
编程语言 时间:
2015-09-03 11:30:58
阅读次数:
128