1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int high[100010]; 7 int temp[100010]; 8 int angry[100010]; 9 int num;10 void...
分类:
编程语言 时间:
2015-04-03 23:45:54
阅读次数:
286
??
排序算法
排序是将无需的记录序列调整为有序记录序列的一种操作。
包括:冒泡排序,选择排序,堆排序,插入排序,希儿排序,快速排序,归并排序等。
(一)
冒泡排序
基本思想:
每次进行相邻两个元素的比较,如果为逆序时即进行交换,直到没有反序的数据元素为止。
排序过程:
设想被排序的...
分类:
编程语言 时间:
2015-04-03 17:32:47
阅读次数:
231
题目链接:http://hihocoder.com/contest/hiho39/problem/1 ,归并排序求逆序数。 其实这道题也是可以用树状数组来做的,不过数据都比较大,所以要离散化预处理一下,文中也会给出离散化+树状数组的解法,不过要比归并排序慢一点。算法: 还是按照题中给的解...
分类:
编程语言 时间:
2015-04-03 13:16:38
阅读次数:
161
#23 Merge k Sorted Lists (N路归并排序)题目地址:#23
题目分类:链表/归并排序/堆排序
题目难度:hard题目
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
翻译:合并K个已经排序的链表,返回一个排序好的链表。...
分类:
编程语言 时间:
2015-04-03 09:38:28
阅读次数:
187
思路:
分治法 归并排序的过程中,有一步是从左右两个数组中,每次都取出小的那个元素放到tmp[]数组中
右边的数组其实就是原数组中位于右侧的元素。当不取左侧的元素而取右侧的元素时,说明左侧剩下的元素均比右侧的第一个元素大,即均能构成一个逆序对。假设现在左侧剩余n个元素,则逆序对数+n。
另外,如果当所有右侧的元素都取完,但是左侧仍然有元素剩余时,左侧剩余的元素已经在之前的运算中加到了逆序对中...
分类:
其他好文 时间:
2015-04-02 22:37:16
阅读次数:
223
http://hihocoder.com/contest/hiho39/problemsjava.util.*;
Main{
=;
mergSort(List<Long>a,l,r){
mid;
(l<r){
mid=(l+r)/;
(a,l,mid);
(a,mid+,r);
List<Long>b1,b2;
b1=ArrayList<Long>(a.subList(l,mid+));
b2=ArrayList<Long>(a.subList(mid..
分类:
编程语言 时间:
2015-04-02 16:39:09
阅读次数:
160
1 时间复杂度比较1) 从平均时间复杂度来考虑:直接插入排序、冒泡、直接选择是三种简单的排序方法,为O(N2),快速、堆、二路归并排序为O(nlog2n),希尔排序介于两者之间。2) 从最好的时间复杂度考虑:直接插入排序和冒泡为O(n),其他的最好情况平均相同。3) 从最坏的时间复杂度考虑:快速排序...
分类:
编程语言 时间:
2015-04-02 10:18:47
阅读次数:
113
最近申请了微软的暑假实习,4号就要在线笔试了,在线测试系统用的是http://hihocoder.com/,今天试手做了一道题。
【题目】
原题链接:http://hihocoder.com/contest/hiho39/problem/1
输入
第1行:1个整数N,表示数组长度。
第2行:N个整数,表示数组的元素a[i],1≤a[i]≤2^31-1。
输出
第1行...
分类:
编程语言 时间:
2015-04-02 01:21:08
阅读次数:
169
逆序数就是指比如:数组A={2,4,3,5}那么就是一个逆序数。
一:暴力匹配
对于数组A中的元素,i从0到n-1,j从i+1到n, 判断每一个是否为逆序数,时间复杂度O(lgN)。太简单了,没写代码了。。。。。
二:归并
归并排序能解决逆序数主要在于:比如归并A1={2,4,5}, A2={1,3},进行归并的时候,我们每次判断A1和A2中元素大小,这里有两种思路:(1)当A1[i] ,...
分类:
其他好文 时间:
2015-04-01 21:54:13
阅读次数:
136