需要排序的最短子数组长度

//需要排序的最短子数组长度
public class GetMinLen{
	
	//返回需要排序的子数组的长度
	public static int GetMinArrLen(int[]arr)
	{
          if(arr==null||arr.length<2)
          {
          	return 0;
          }
          //第一步:从右向左遍历获得最左边需要交换的位置
          int NuMinIndex=arr.length-1;
          int min=arr[arr.length-1];
          for(int i=arr.length-2;i>=0;i--)
          {
          	  if(arr[i]>min)
          	  {
                 NuMinIndex=i;
          	  }else{
                 min=Math.min(arr[i],min);
          	  }
          }

          //第二步:从左向右遍历获得最右边需要交换的位置
          int NuMaxIndex=0;
          int max=arr[0];
          for(int i=1;i<arr.length;i++)
          {
          	 if(arr[i]<max)
          	 {
          	 	NuMaxIndex=i;
          	 }else
          	 {
          	 	max=Math.max(arr[i],max);
          	 }

          }
          return  NuMaxIndex-NuMinIndex+1;
	}
	public static void main(String[]args)
	{ 
		//System.out.println("Hello");
		int[]arr={1,5,3,4,2,6,7};
		int[]arr2={2};
		int[]arr3={};
		System.out.println(GetMinArrLen(arr));
		System.out.println(GetMinArrLen(arr2));
		System.out.println(GetMinArrLen(arr3));

	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值