??
1.归并排序
《算法导论》P19
参考网址:
白话经典算法系列之五 归并排序的实现 - MoreWindows Blog -
博客频道 - CSDN.NET
http://blog.csdn.net/morewindows/article/details/6678165
#include "stdafx.h"
#i...
分类:
编程语言 时间:
2015-03-10 10:24:52
阅读次数:
241
题解:用字符数组存两个因数,再将数组逆序以便处理,再对每一个数位进行处理,注意字符类型与整型的变换,每一位相乘时需将每位上的字符减48,最后存计算结果时载加48,输出是需逆序输出。代码如下:#include#includeint main(){ char A[100],B[100],ch...
分类:
其他好文 时间:
2015-02-22 12:12:39
阅读次数:
135
intInversionNumber(char*s,intlen){intans=0;//s逆序数intA,C,G;//各个字母出现次数,T是最大的,无需计算T出现次数A=C=G=0;for(inti=len-1;i>=0;i--){switch(s[i]){case'A':A++;break;//...
分类:
编程语言 时间:
2015-02-18 10:40:43
阅读次数:
205
数组的逆序,只能用于数组,不能用于哈希表
function reverseTable(tab)
local tmp = {}
for i = 1, #tab do
local key = #tab
tmp[i] = table.remove(tab)
end
return tmp
end
// 示例
local t = {"one", "two", "three"}
...
分类:
编程语言 时间:
2015-02-04 21:50:25
阅读次数:
6498
(转)树状数组可以用来求逆序数, 当然一般用归并求。如果数据不是很大, 可以一个个插入到树状数组中, 每插入一个数, 统计比他小的数的个数,对应的逆序为 i- getsum( data[i] ),其中 i 为当前已经插入的数的个数, getsum( data[i] )为比 data[i] 小的数的个数i- sum( data[i] ) 即比 data[i] 大的个数, 即逆序的个数但如果数据比较大...
分类:
编程语言 时间:
2015-01-29 22:35:54
阅读次数:
285
前段时间用归并排序写了这题,发现树状数组也能解这题,就去学习了一下
首先先来看一个序列 6 1 2 7 3 4 8 5,此序列的逆序数为5+3+1=9。冒泡法可以直接枚举出逆序数,但是时间复杂度太高O(n^2)。冒泡排序的原理是枚举每一个数组,然后找出这个数后面有多少个数是小于这个数的,小于它逆序数+1。仔细想一下,如果我们不用枚举这个数后面的所有数,而是直接得到小于这个数的个数,那么效率将...
分类:
编程语言 时间:
2014-12-09 23:08:39
阅读次数:
270
题目大意:给出一个序列,求出这个序列的逆序对数量。定义一种操作,将一个数和他后面比他小的数字拿出来排序, 然后再放回去,之后输出逆序对数。
思路:思路题。手动模拟一下,会发现,逆序对变化的只是排序的那些点 。所以我们只要处理那些点就行了。先求一次逆序对,然后每次在拿出的数后面找到一个最小的数字,把它的权值改成INF,统计答案。
CODE:
#include
#inclu...
分类:
编程语言 时间:
2014-12-06 16:57:25
阅读次数:
159
咳咳,这个图必须要的....首先,当有一个数组a数量非常大的时候,我们可能改变某个a[i]的值,要求a[n]的和,全部加起来,无疑是要O(n)的时间复杂度。但是如果n非常大时,O(n)时间复杂度肯定要跪,所以,怎么办的,用神奇的树状数组。树状数组代码简单,但是非常强大!更令人兴奋的是,它的时间复杂度...
分类:
编程语言 时间:
2014-12-05 21:02:54
阅读次数:
160