首先,归并排序,分治,递归解决小的范围,再合并两个有序的小范围数组,便得到整个有序的数组。
这是很适合用递归来写的,至于非递归,便是从小到大,各个击破,从而使得整个数组有序。代码如下:
void merge(vector &A, int left, int mid, int right)
{
int i=left,j=mid+1;
vector tmp(right-left+1,0);...
分类:
其他好文 时间:
2014-08-10 13:08:00
阅读次数:
235
说明:归并排序: 时间 O(nlogn),空间 O(1). 每次将链表一分为二, 然后再合并。快排(用两个指针)
说明: 与顺序表不同的时,每次找插入位置时从头开始走。
分类:
其他好文 时间:
2014-08-10 01:40:39
阅读次数:
226
Sort a linked list in O(n log n) time using constant space complexity.思路:题目要求O(n log n)的时间复杂度以及常空间复杂度,因此,使用归并排序策略。 1 class Solution { 2 public: 3 ...
分类:
其他好文 时间:
2014-08-09 23:13:19
阅读次数:
284
归并排序法是一个基于分治法的比较排序方法,其最差情况复杂度为O(nlogn),而快速排序法的复杂度在最差情况下达到O(n2)本文使用PHP来讨论其算法过程:假设对乱序数列进行排序 $input = array(11,5,1,4,8,7,9,2);思路可以表示:(图是PPT画的,比较简单,请看官见谅)...
分类:
其他好文 时间:
2014-08-09 11:20:37
阅读次数:
398
HDU 4911 Inversion(基本算法-排序)
题目大意:
有n个数,问你经过K次交换后的逆序数最少多少个?
解题思路:
根据排序的思想,每一步都能减少1个逆序数,所以K步之多减少K个逆序数。
因此,这题转化为了求逆序数,数据量略微大,用归并排序即可。...
分类:
其他好文 时间:
2014-08-08 12:58:36
阅读次数:
228
【好像博客园不能直接转载,所以我复制过来了。。】1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1、2、3、4、5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 ...
分类:
其他好文 时间:
2014-08-08 01:52:25
阅读次数:
431
Atitit.现实生活中最好使用的排序方法-----ati排序法总结
1. 现在的问题 1
2. 排序的类别::插入排序//交换排序//选择排序(每次最小/大排在相应的位置 )//归并排序//基数排序 1
3. 选择排序法 (垃圾...不好使用) 2
4. 堆排序-(雅十垃圾...不好用) 2
5. 希尔排序法 (雅十垃圾...不好用) 3
6. 冒泡排序法 (雅十垃圾......
分类:
其他好文 时间:
2014-08-07 00:53:17
阅读次数:
253
解题报告算导上给了提示 用归并排序的代码进行修改来实现 思考后不难看出 归并排序的合并(merge)过程中 对数据进行了比较1)如果数组L 的当前某元素大于数组R的当前元素,那么 由于L数组是有序的(升序) 因此 L数组当前元素以及他后面的所有元素都与R数组构成逆序对2)我们的排序并不影响逆序对的数...
分类:
其他好文 时间:
2014-08-06 22:31:22
阅读次数:
451
对于n个数,可以做k次移动,每次移动可以互换相邻位置的两个数,问最少 number of pair (i,j) where 1≤ii>aj.
如果不移动的话,ans=’n个数的逆序对数‘,移动k次会减少k个
归并排序求逆序对数:
#include "stdio.h"
#include "string.h"
#include "math.h"
int b[100010],a[1...
分类:
其他好文 时间:
2014-08-06 14:53:51
阅读次数:
211
Problem Description
bobo has a sequence a1,a2,…,an. He is allowed to swap two adjacent numbers for no more than k times.
Find the minimum number of inversions after his swaps.
Note: The numbe...
分类:
其他好文 时间:
2014-08-06 14:51:38
阅读次数:
177