题目
设计实现统计逆序数的分治算法,并且对算法进行时间复杂度分析
算法分析
基础算法
- 理论分析
对于一个N长的数组,遍历数组,将数组的每两项进行比较,数组的第一项需要比较(N-1)次…数组的最后一项需要比较0次,n-1+n-2+…+2+1+0
一共需要比较n(n-1)/2次,算法的时间复杂度为O(n^2)
- 上机测试
package YoungHD;
import java.util.Random;
/*
设计实现统计逆序数的分治算法,并且对算法进行时间复杂度分析
*/
public class Inverse {
public static void main(String[] args) {
// TODO Auto-generated method stub
//随机生成n个数
int MAX=10;
for(int t=1;t<5;t++) //设置t为运行数量级
{
int [] num = new int[MAX];
Random r = new Random(1);
for(int i=0;i<MAX;i++)
{
num[i]=r.nextInt(10000);
}
//算法实现
long startTime=System.nanoTime(); //获取程序时间
int SUM=0; //记录逆序数
int COM=