当前位置 : 主页 > 编程语言 > 其它开发 >

Java案例——数组元素的移动及换位

来源:互联网 收集:自由互联 发布时间:2022-06-29
需求一:给出一个固定数组int[] array = {1, 3, 6, 8, 7, 9, 4, 10},要求将某一元素放到某一元素后,例如将1放到6后,输出结果为array = {3, 6,1, 8, 7, 9, 4, 10} 分析: 1.找出两个元素所在的下标

需求一:给出一个固定数组int[] array = {1, 3, 6, 8, 7, 9, 4, 10},要求将某一元素放到某一元素后,例如将1放到6后,输出结果为array = {3, 6,1, 8, 7, 9, 4, 10}

分析:

1.找出两个元素所在的下标

2.判断两个元素下标的大小关系,不同情况使用不同的方法

3.根据不同的情况使用System.arraycopy方法

需求二:给出一个固定数组int[] array = {1, 3, 6, 8, 7, 9, 4, 10},要求将其中任意两个元素调换位置,例如1,10调换位置,输出结果为array ={10, 3, 6, 8, 7, 9, 4, 1}

 public class HomeWork05 {
     public static void main(String[] args) {
         int[] array = {1, 3, 6, 8, 7, 9, 4, 10};
         int[] ints1 = changPosition(10, 3, array);
         for (int i = 0; i < ints1.length; i++) {
             System.out.print(ints1[i]+"\t");
        }
         System.out.println("---------------------------------------");
         int[] ints = changSpace(9, 10, array);
         // int[] ints = changPosition(3, 7, array);
         for (int i = 0; i < ints.length; i++) {
             System.out.print(ints[i] + "\t");
        }
 
 
    }
 
     public static int[] changPosition(int n1, int n2, int[] array) {
         int a = -1;
         int b = -1;
         for (int i = 0; i < array.length; i++) {
             if (array[i] == n1) {
                 a = i;
            }
        }
         for (int i = 0; i < array.length; i++) {
             if (array[i] == n2) {
                 b = i;
            }
        }
         //两个元素交换位置
 
         if (a > b) {//判断第一个参数下标是否大于第二个参数下标
             System.arraycopy(array, b, array, b + 1, a - b);//是的话用第二个参数下标作为起始位置
 //           array[a] = n2;
             array[b + 1] = n1;
 
        } else if (a < b) {//判断第一个参数下标是否大于第二个参数下标
             System.arraycopy(array, a + 1, array, a, b - a);//不大于就用第一个参数下标做起始位置
             array[b] = n1;
        }
         return array;
 
    }
 
     public static int[] changSpace(int n1, int n2, int[] array) {
         int a = -1;
         int b = -1;
         for (int i = 0; i < array.length; i++) {
             if (array[i] == n1) {
                 a = i;
            }
        }
         for (int i = 0; i < array.length; i++) {
             if (array[i] == n2) {
                 b = i;
            }
        }
         //两个元素交换位置
         if (a > b) {//判断第一个参数下标是否大于第二个参数下标
             System.arraycopy(array, b, array, b, a - b);//是的话用第二个参数下标作为起始位置
             array[a] = n2;
             array[b] = n1;
 
        } else if (a < b) {//判断第一个参数下标是否大于第二个参数下标
             System.arraycopy(array, a + 1, array, a, b - a - 1);//不大于就用第一个参数下标做起始位置
             array[b] = n1;
             array[a] = n2;
        }
         return array;
    }
 }
 
网友评论