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;
}
}