node 网站开发 视频教程,坂田网站设计,dedecms+wordpress,网站模板上传工具此类实现:输出一行数组数据#xff0c;根据输入的下标#xff0c;以下标位置为结束#xff0c;将原数组分割成两组子数组。并交换两个子数组的位置#xff0c;保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点#xff0c;分割为子数组一#xff1a;7,… 此类实现:输出一行数组数据根据输入的下标以下标位置为结束将原数组分割成两组子数组。并交换两个子数组的位置保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点分割为子数组一7,9,8,5。和子数组二3,2.经过交换算法后的结果应为3,2,7,9,8,5有两种交换算法1前插法:将子数组3,2另存在一个临时数组中将原数组7,9,8,5,3,2每一位向后移两个位置 再将子数组3,2插入到移动好元素位置的原数组中。2逆置法:将原数组7,9,8,5,3,2逆置为2,3,5,8,9,7 再分别逆置分割好的两个子数组结果应为:3,2,7,9,8,5 package 顺序表;import java.util.ArrayList;
import java.util.Scanner;/*** param args* author 刘雁冰* date 2015-2-2 19:43*//** 此类实现:* 输出一行数组数据根据输入的下标以下标位置为结束将原数组分割成两组子数组。* 并交换两个子数组的位置保持子数组中的元素序号不变.* 如:原数组为7,9,8,5,3,2 以下标3为分割点分割为子数组一7,9,8,5。和子数组二3,2.* 经过交换算法后的结果应为3,2,7,9,8,5* * 有两种交换算法* 1前插法:将子数组3,2另存在一个临时数组中将原数组7,9,8,5,3,2每一位向后移两个位置* 2逆置法:将原数组7,9,8,5,3,2逆置为2,3,5,8,9,7* 再分别逆置分割好的两个子数组结果应为:3,2,7,9,8,5*/public class ResetOrderListPostion {/** int []order:数组存储用户输入的原数组* int postion:存储用户输入的分隔下标*/static int []order;static int postion;/** 前插法*/public void frontInsert(int []orderInsert,int postion){/** 使用ArrayList链表来存储分隔后的子数组一*/ArrayListInteger listAnew ArrayListInteger();for(int ipostion1;iorderInsert.length;i){listA.add(orderInsert[i]);}int a[]new int[listA.size()];for(int i0;ilistA.size();i){a[i]listA.get(i);//将原数组每一个元素往后移动子数组长度次for(int jorderInsert.length-1;j0;j--){orderInsert[j]orderInsert[j-1];}} //将子数组一插入到移动好的子数组中for(int ka.length-1;k0;k--){orderInsert[k]a[k];}//注意消除最后一个元素的,号System.out.println(使用前插法---交换位置后数组的结果如下:);for(int j0;jorderInsert.length;j){if(jorderInsert.length-1)System.out.print(orderInsert[j]);elseSystem.out.print(orderInsert[j],);}}/** 逆置法*/public void inversion(int []orderInversion,int postion){//逆置整个原数组for(int i0;iorderInversion.length/2;i){int torderInversion[i];orderInversion[i]orderInversion[orderInversion.length-1-i];orderInversion[orderInversion.length-1-i]t;}//逆置子数组一for(int i0;i(orderInversion.length-postion)/2;i){int torderInversion[i];orderInversion[i]orderInversion[orderInversion.length-postion-2-i];orderInversion[orderInversion.length-postion-2-i]t;}//逆置子数组二for(int i0;i(postion1)/2;i){int torderInversion[orderInversion.length-1-i];orderInversion[orderInversion.length-1-i]orderInversion[orderInversion.length-postion-1i];orderInversion[orderInversion.length-postion-1i]t;}//注意消除最后一个元素的,号System.out.println(使用逆置法---交换位置后的结果如下:);for(int i0;iorderInversion.length;i){if(iorderInversion.length-1)System.out.print(orderInversion[i]);elseSystem.out.print(orderInversion[i],);}System.out.println();}public static void main(String[] args) {// TODO Auto-generated method stubResetOrderListPostion rpnew ResetOrderListPostion();System.out.println(请输入数组按-1结束输入);ArrayListIntegerlistnew ArrayListInteger();Scanner scnew Scanner(System.in);int msc.nextInt();while(m!-1){list.add(m);msc.nextInt();}int []ordernew int[list.size()];for(int i0;ilist.size();i){order[i]list.get(i);}System.out.println(您输入的数组数据为:);for(int i0;iorder.length;i){if(iorder.length-1)System.out.print(order[i]);elseSystem.out.print(order[i],);}System.out.println();System.out.println(请输入下标以此来将原数组分隔成两个数组(注意输入的下标不能小于0且不能大于等于数组长度):);int postionsc.nextInt();System.out.println(您输入的分割下标为:\npostion);//判定输入的分隔下标有效性if(postion0||postionorder.length)System.out.println(输入有误!);else{System.out.println(********************请选择数组位置交换算法********************);System.out.println(********************1--:前插法********************);System.out.println(********************2--:逆置法********************);int nsc.nextInt();switch(n){case 1:{rp.frontInsert(order, postion);break;}case 2:{rp.inversion(order, postion);break;}default:System.out.println(输入有误!);}}}}转载于:https://www.cnblogs.com/luckid/p/4268700.html