数组练习题(冒泡排序 copyOf 移位 求平均值 偶数在前,奇数在后)

 1.模拟实现Arrays.coptOf

import java.util.Arrays;
public class jk{
	public static void main (String[]args){
		int [] a={1,2,3,4,5};
		System.out.println(Arrays.toString(Arrays.copyOf(a,5)));
	}
	public static int[] copyOf(int [] a,int newlength){
		int [] b=new int [newlength];
		int length=a.length<=newlength?a.length:newlength;
			for(int i=0;i<length;i++){
				 b[i]=a[i];
			 }
			 return b;
		 
	 }
}//复制数组中元素	

2.java 冒泡排序法

import java.util.Arrays;
public class jk{
	public static void main(String[] args){
		//有序[a.length-i,a.length)
		//无序[0,a.length-i)
		
		int []a ={1,2,3,4};
		int []b={4,3,2,1};
		int []c={3,3,3,3};
		int []d={1,3,2,4};
		testBubbleSort(a);
		System.out.println(Arrays.toString(a));
		testBubbleSort(b);
		System.out.println(Arrays.toString(b));
		testBubbleSort(c);
		System.out.println(Arrays.toString(c));
		testBubbleSort(d);
		System.out.println(Arrays.toString(d));

	}
	public static void testBubbleSort(int []a){
		
			for(int i=0;i<a.length;i++)
			{
				boolean sorted=true;
				for(int j=1;j<a.length-i;j++)
				{
					if(a[j-1]>a[j])
					{
						int p=a[j-1];
						a[j-1]=a[j];
						a[j]=p;
						sorted=false;
					}
				}
				if(sorted==true)//未发生任何交换,则表明有序
					return;
			}
			
	}
}//冒泡排序

3.去掉最大值及最小值求数组的平均值

public class jk{
	public static void main(String[] args){
     int []a={1,2,3,4,5};
	 double ave=average(a);
	 System.out.println(ave);
	}
	public static double average(int []a){
		int max=a[0];
		int min=a[0];
		int sum=0;
		for(int i=0;i<a.length;i++){
			sum=sum+a[i];
			if(a[i]>max){
				max=a[i];
			}
			if(a[i]<min){
				min=a[i];
			}
		}
		return (double)((sum-min-max)/(a.length-2));
	}
}

4.对数组进行右移操作

//方法1:逐个移位
import java.util.Arrays;
public class jk{
	 public static void main(String[] args){
		int []a={1,2,3,4,5,6};
		rotate(a,3);
	 }
	 public static void rotate(int []a,int k){
		 for(int i=0;i<k;i++)
		 {
			 int b=a[a.length-1];
			for(int j=a.length-1;j>0;j--)
			 {
				 a[j]=a[j-1];
			 }
			 a[0]=b;
			 
		 }
		 System.out.println(Arrays.toString(a));
	 }
}
//方法2将要进行变动的部分整体移动
import java.util.Arrays;
public class jk{
	 public static void main(String[] args){
		int []a={1,2,3,4,5,6};
		System.out.println(Arrays.toString(rotate(a,3)));
	 }
	 public static int [] rotate(int []nums,int k){
		  k=k%nums.length;
		  int []rightPart=Arrays.copyOfRange(nums,nums.length-k,nums.length);
		  System.arraycopy(nums,0,nums,nums.length-k,k);
		  System.arraycopy(rightPart,0,nums,0,nums.length-k);
		  return nums;
	 }
}

5.对一个数组实现偶数在前,奇数在后

<1.分别定义两个标记,从数组的左右两端开始进行判断奇偶数

import java.util.Arrays;
public class jk{
	public static void main (String[]args){
		int [] a={4,3,1,6,7};
		System.out.println(Arrays.toString(partition1(a)));
		System.out.println(Arrays.toString(partition2(a)));

	}

	public static int[] partition1(int []nums){
		int begin=0;
		int end=nums.length-1;
		while(begin<end)
		{
			while(nums[begin]%2==0&&begin<end)
			{
			begin++;
			}
			while(nums[end]%2!=0&&begin<end)
			{
			end--;
			}
			swap(nums,begin,end);
		}
		return nums;
	}
        public static void swap(int []nums,int a,int b){
		int p=nums[a];
		nums[a]=nums[b];
		nums[b]=p;
	}
}

<2.定义一个指向数组开头的变量,当数组元素为偶数数,将下标与该变量交换

import java.util.Arrays;
public class jk{
	public static void main (String[]args){
		int [] a={4,3,1,6,7};
		System.out.println(Arrays.toString(partition1(a)));
		System.out.println(Arrays.toString(partition2(a)));

	}
        public static int[] partition2(int []nums){
		int d=0;
		for(int i=0;i<nums.length;i++)
		{
			if(a[i]%2==0)
			{
				swap(nums,i,d);
				d++;
			}
		}
		return nums;
	}
        public static void swap(int []nums,int a,int b){
		int p=nums[a];
		nums[a]=nums[b];
		nums[b]=p;
	}

	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值