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

打印 上一主题 下一主题

主题 652|帖子 652|积分 1971

需求一:给出一个固定数组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}
  1.  public class HomeWork05 {<br>     public static void main(String[] args) {<br>         int[] array = {1, 3, 6, 8, 7, 9, 4, 10};<br>         int[] ints1 = changPosition(10, 3, array);<br>         for (int i = 0; i < ints1.length; i++) {<br>             System.out.print(ints1[i]+"\t");<br>         }<br>         System.out.println("---------------------------------------");<br>         int[] ints = changSpace(9, 10, array);<br>         // int[] ints = changPosition(3, 7, array);<br>         for (int i = 0; i < ints.length; i++) {<br>             System.out.print(ints[i] + "\t");<br>         }<br> ​<br> ​<br>     }<br> ​<br>     public static int[] changPosition(int n1, int n2, int[] array) {<br>         int a = -1;<br>         int b = -1;<br>         for (int i = 0; i < array.length; i++) {<br>             if (array[i] == n1) {<br>                 a = i;<br>             }<br>         }<br>         for (int i = 0; i < array.length; i++) {<br>             if (array[i] == n2) {<br>                 b = i;<br>             }<br>         }<br>         //两个元素交换位置<br> ​<br>         if (a > b) {//判断第一个参数下标是否大于第二个参数下标<br>             System.arraycopy(array, b, array, b + 1, a - b);//是的话用第二个参数下标作为起始位置<br> //            array[a] = n2;<br>             array[b + 1] = n1;<br> ​<br>         } else if (a < b) {//判断第一个参数下标是否大于第二个参数下标<br>             System.arraycopy(array, a + 1, array, a, b - a);//不大于就用第一个参数下标做起始位置<br>             array[b] = n1;<br>         }<br>         return array;<br> ​<br>     }<br> ​<br>     public static int[] changSpace(int n1, int n2, int[] array) {<br>         int a = -1;<br>         int b = -1;<br>         for (int i = 0; i < array.length; i++) {<br>             if (array[i] == n1) {<br>                 a = i;<br>             }<br>         }<br>         for (int i = 0; i < array.length; i++) {<br>             if (array[i] == n2) {<br>                 b = i;<br>             }<br>         }<br>         //两个元素交换位置<br>         if (a > b) {//判断第一个参数下标是否大于第二个参数下标<br>             System.arraycopy(array, b, array, b, a - b);//是的话用第二个参数下标作为起始位置<br>             array[a] = n2;<br>             array[b] = n1;<br> ​<br>         } else if (a < b) {//判断第一个参数下标是否大于第二个参数下标<br>             System.arraycopy(array, a + 1, array, a, b - a - 1);//不大于就用第一个参数下标做起始位置<br>             array[b] = n1;<br>             array[a] = n2;<br>         }<br>         return array;<br>     }<br> }
复制代码
 
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表