统计逆序数的分治算法

本文介绍了如何使用分治算法来统计数组中的逆序数。基础算法的时间复杂度为O(n^2),而采用分治策略后,算法的时间复杂度降低到O(N*logN)。通过理论分析和上机测试,验证了分治算法在处理逆序数问题上的效率提升。
摘要由CSDN通过智能技术生成

题目

设计实现统计逆序数的分治算法,并且对算法进行时间复杂度分析

算法分析

基础算法

  • 理论分析

对于一个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=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值