一维数组的拷贝

四种拷贝都是浅拷贝:
(1)for循环;
(2)clone;
(3)System.arraycopy(src,srcPos,dest,destPos,length)不产生新对象 底层调用native
src:源数组 srcPos:源数组要复制的起始位置 dest:目的数组
destPos:目的数组放置的起始位置 length:复制的长度
(4)Arrays.copyOf(luckyNumbers,luckyNumbers.length),产生新对象 返回值T[] 底层调用System.arraycopy;
1.将奇数放在偶数前面,大小顺序不要求

sort(数组名) 或 sort(数组名,起始索引,结束索引,键值)

public static void SortNums(int[] nums,int low,int high) {
		while(low<high) {
			while(low<high && nums[low]%2 == 1 ) {
				low += 1;
			}
			while(low<high && nums[high]%2 == 0) {
				high -= 1;
			}
			int temp = nums[low];
			nums[low] = nums[high];
			nums[high] = temp;
		}
	}
	public static void main(String[] args) {
		int[] nums = {1,2,3,4,5,6,7,8,9,0};
		SortNums(nums,0,9);
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i]+"  ");
		}
		System.out.println();
	}
}

2.一个数组是有序的,给定一个key,有两个数字加起来等于key,找到这两个数字下标

3一个int数组,除两个数字出现一次,其他都是两次,找出这个数字

4.如何排序数组并插入某个元素

排序数组用选择排序或者冒泡排序
public static void main(String[] args){
int i,k;
int [] A = new int []{1,2,3,4,5,6,7,8,0};//0是预留位置,不属于有序数组内容
System.out.println("原始有序数组:");
for (i = 0;i<A.length-1;i ++)
System.out.printf("%6d",A [i]);
System.out.println();
Scanner scan = new Scanner(System.in);
System.out.print("请输入要插入到数组的整数:");
String s = scan.nextLine();
int x = Interger.parseInt(s);//将数字字符串化为等效的整数
int N = A.length-1;//数组A的有效长度
for (k = 0;k<N;k++);{
if (x<A[k])
break;//找到数据插入的位置k
}//从最后一个元素往后平移,为新数据腾出位置
for (i = N;i>k;i--){
A[k] = x;
System.out.println("插入数据后的数组: ");
for (int item :A)
System.out.printin("%6d",iem);
}
}

5.如何搜索组中最小值和最大元素

public static void main(String[] args) {
		int[] a={1,2,3,4,5,6,7,8};
		getMaxAndMin0(a);
	}
	public static void getMaxAndMin0(int[] a){
		int min=a[0];
		int max=a[0];
		for (int i = 0; i +1< a.length; i+=2) {
			if(a[i]<a[i+1]){
				if(a[i]<min){
					min=a[i];
				}
				if(a[i+1]>max){
					max=a[i+1];
		}
			}else{
				if(a[i+1]<min){
					min=a[i+1];
				}
				if(a[i]>max){
					max=a[i];
				}
			}
		}
		System.out.println("max:  "+max);
		System.out.println("min:  "+min);
	}
	public static void getMaxAndMin(int[] a){
		int max=a[0];
		int min=a[0];
		for (int i = 0; i < a.length; i++) {
			if(a[i]>max){
				max=a[i];
			}else if(a[i]<min){
				min=a[i];
			}
			
		}
		System.out.println("max:  "+max);
		System.out.println("min:  "+min);
	}
	}

6.如何合并两个数组

String[] aa = {"11","22","33"};
String[] bb = {"44","55","66"};
// 合并两个数组
String[]  cc= new String[aa.length + bb.length];
System.arraycopy(aa, 0, cc, 0, cc.length);

7.如何填充数组
fill(数组名,值) 或 fill(数组名,起始索引,结束索引,键值,值)//填充指定索引范围

public static void main(String[] args) {
            int[] a = new int[5];

            Arrays.fill(a, 1);

            System.out.println(Arrays.toString(a));
    }

8.如何删除数组指定元素
我建立一个新的数组,将删除后的其他元素放入

     int[] arr = new int[] { 1, 2, 3, 4, 5 };
     System.out.println(Arrays.toString(arr));
     Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除第几个元素:");
        int n = sc.nextInt(); //用来保存要删除数组的位置
    // 定义一个新的数组用来存放删除后的数组,长度为原来数组-1
        int[] arrNew = new int[arr.length - 1];
        // 循环遍历删除第n个元素,并将剩余元素放入新数组
        for (int i = 0, j = 0; i < arr.length; i++) {
            if (i != (n - 1)) { //删除元素的索引为n-1
                arrNew[j] = arr[i];
                j++;
            }
        }
        System.out.println(Arrays.toString(arrNew));
    }

9.如何从数组中查找常见元素

{
public static void main(String[] args)
{
int[] arr = new int[]{3,5,62,6,21,344,53};
int index = getIndex(arr,3);
System.out.println("index="+index);

int[] arra = new int[]{2,5,6,8,9,12,14,15,16,19};
int index2 = binarySearch_2(arra,16);
System.out.println("index2="+index2);
}
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
{
return x;
}
}
return -1;
}

猜你喜欢

转载自blog.csdn.net/lmx9813/article/details/83176653