题意:给出长度为n的序列,每次只能交换相邻的两个元素
问至少要交换几次才使得该序列为递增序列
分析:冒泡排序每次只能交换相邻两个元素,也就是求用冒泡排序使其为递增序列的交换次数,每交换一次记录一次就好
但是这题数据较大,冒泡排序效率比较低,会超时的
这里就可以利用归并排序了...
分类:
编程语言 时间:
2014-11-01 17:48:33
阅读次数:
247
排序有内部排序和外部排序,内部排序是指数据记录在内存中进行排序,而外排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里所说的八大排序是内部排序:当n较大,则应采用时间复杂度为O(nlog2n)的排序算法:快速排序、堆排序和归并排序。快速排序:是目前基于比较的内部排...
分类:
编程语言 时间:
2014-11-01 16:04:29
阅读次数:
281
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2014-11-01 13:11:20
阅读次数:
187
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define eps 1e-12
///#define M 1000100
///#define LL __int64
#define L...
分类:
编程语言 时间:
2014-11-01 01:07:17
阅读次数:
188
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较...
分类:
编程语言 时间:
2014-10-31 15:10:49
阅读次数:
330
class SortClass: NSObject { func quickSort(inout array:[Int]){ self.quick(&array, left: 0, right: array.count-1) } func quickMain(...
分类:
编程语言 时间:
2014-10-31 11:39:31
阅读次数:
228
显示两个不同的文件;或者同时显示一个文件的两个不同地方;又或者并排比较两个文件。这一切都可以通过分割窗口实现。打开新窗口最简单的命令如下::split (水平分割) || :vsplit (垂直分割)这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中.CTRL-W w 命令可以用于在窗口间跳转。如...
分类:
系统相关 时间:
2014-10-31 11:26:28
阅读次数:
212
1、归并排序
分治思想:每次从中间分开为两个子问题,对每个子问题排序完成之后,将两个已排序的部分进行归并操作即得到最终排序的结果。
(1)如果数组S中元素个数为0或者1返回
(2)选取中间位置的元素下标,对左半部分SL递归排序,对右半部分SR递归排序
(3)将排好序的SL、SR进行归并后返回最终结果
平均时间复杂度O(NlogN),最坏情况也为O(NlogN),最好情况为O(N)。
...
分类:
编程语言 时间:
2014-10-30 23:57:55
阅读次数:
470
JAVA代码实现数据结构中7种基本排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。
希望对您有所帮助。...
分类:
编程语言 时间:
2014-10-30 21:01:12
阅读次数:
238