java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置...

此类实现:
输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组。
并交换两个子数组的位置,保持子数组中的元素序号不变.
如:原数组为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链表来存储分隔后的子数组一*/ArrayList<Integer> listA=new ArrayList<Integer>();for(int i=postion+1;i<orderInsert.length;i++){listA.add(orderInsert[i]);}int a[]=new int[listA.size()];for(int i=0;i<listA.size();i++){a[i]=listA.get(i);//将原数组每一个元素往后移动子数组长度次for(int j=orderInsert.length-1;j>0;j--){orderInsert[j]=orderInsert[j-1];}}  //将子数组一插入到移动好的子数组中for(int k=a.length-1;k>=0;k--){orderInsert[k]=a[k];}//注意消除最后一个元素的,号System.out.println("使用前插法---交换位置后数组的结果如下:");for(int j=0;j<orderInsert.length;j++){if(j==orderInsert.length-1)System.out.print(orderInsert[j]);elseSystem.out.print(orderInsert[j]+",");}}/** 逆置法*/public void inversion(int []orderInversion,int postion){//逆置整个原数组for(int i=0;i<orderInversion.length/2;i++){int t=orderInversion[i];orderInversion[i]=orderInversion[orderInversion.length-1-i];orderInversion[orderInversion.length-1-i]=t;}//逆置子数组一for(int i=0;i<(orderInversion.length-postion)/2;i++){int t=orderInversion[i];orderInversion[i]=orderInversion[orderInversion.length-postion-2-i];orderInversion[orderInversion.length-postion-2-i]=t;}//逆置子数组二for(int i=0;i<(postion+1)/2;i++){int t=orderInversion[orderInversion.length-1-i];orderInversion[orderInversion.length-1-i]=orderInversion[orderInversion.length-postion-1+i];orderInversion[orderInversion.length-postion-1+i]=t;}//注意消除最后一个元素的,号System.out.println("使用逆置法---交换位置后的结果如下:");for(int i=0;i<orderInversion.length;i++){if(i==orderInversion.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 rp=new ResetOrderListPostion();System.out.println("请输入数组,按-1结束输入");ArrayList<Integer>list=new ArrayList<Integer>();Scanner sc=new Scanner(System.in);int m=sc.nextInt();while(m!=-1){list.add(m);m=sc.nextInt();}int []order=new int[list.size()];for(int i=0;i<list.size();i++){order[i]=list.get(i);}System.out.println("您输入的数组数据为:");for(int i=0;i<order.length;i++){if(i==order.length-1)System.out.print(order[i]);elseSystem.out.print(order[i]+",");}System.out.println();System.out.println("请输入下标,以此来将原数组分隔成两个数组(注意,输入的下标不能小于0且不能大于等于数组长度):");int postion=sc.nextInt();System.out.println("您输入的分割下标为:\n"+postion);//判定输入的分隔下标有效性if(postion<0||postion>=order.length)System.out.println("输入有误!");else{System.out.println("********************请选择数组位置交换算法********************");System.out.println("********************1--:前插法********************");System.out.println("********************2--:逆置法********************");int n=sc.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux共享磁盘给指定ip,linux想挂载通过ipsan协议推送上来的磁盘,两个ip共分配了21个未分区的盘,...

先安装iSCSI initiator以及iscsiadmiscsiadm是基于命令行的iscsi管理工具&#xff0c;提供了对iscsi节点、会话、连接以及发现记录的操作。iscsiadm的使用说明可以查看/usr/share/doc/iscsi-initiator-utils-6.2.0.742/README&#xff0c;也可以运行man iscsiadm或iscsiadm --h…

dto与dto相互转换_在DTO上

dto与dto相互转换通常使用DTO或数据传输对象 。 什么不是s&#xff1f; 众所周知&#xff0c;它们源自DDD&#xff08;域驱动设计&#xff09;。 在那里很有意义–域对象具有状态&#xff0c;身份和业务逻辑&#xff0c;而DTO仅具有状态。 但是&#xff0c;当今许多项目正在使用…

动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据...

动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据&#xff1a;由存储过程决定&#xff0c;如果编写的存储过程可以生成需要呈现的表格则直接绑定&#xff0c;否则要动态生成表格转载于:https://www.cnblogs.com/yzl495/p/4269571.html

【APICloud系列|1】华为应用市场 应用版权证书或代理证书怎么填

将apk上传到华为应用市场 首页提交的时候是没有问题的&#xff0c;但是第二次需要更新的时候发现多了一个必填的选项 我的应用被打回来啦&#xff0c;说明这个免责函需要要填写。今天公章还不在公司&#xff0c;还着急上线&#xff0c;不能准时上线就扣20%的工资。

Lambdas中的例外:有点混乱的优雅解决方案

考虑以下用于写入文件的功能&#xff1a; 该方法背后的想法是&#xff0c;以允许用户在不同的实施方式中通过InputStream的方法&#xff0c;以便writeToFile可以被称为例如用GZIPOuputStream &#xff0c; SnappyOuputStream &#xff08;快速压缩&#xff09;或简单的FileIn…

linux ub查看ftp安装,Linux Ubuntu 18.04 安装 FTP服务

安装更新数据源 : apt-get update安装FTP: sudo apt-get install vsftpd服务启动FTP服务: sudo service vsftpd startTip可以使用screen后台运行服务停止FTP服务: sudo service vsftpd stop查看FTP服务状态: sudo service vsftpd status配置新建用户新建/home/uftp目录作为用户…

图片上的文字怎么转换为word

图片上的文字怎么转换为word 很多软件因为自身技术不成熟所有对使用环境操作步骤等有诸多的要求&#xff0c;使得用户使用的时候很不方便。一般的ocr文字识别软件不能在win7系统中使用&#xff0c;有的时候要使用这个软件还要重装系统或是找一台xp系统的电脑&#xff0c;使用受…

【APICloud系列|2】上架安卓应用商店全套流程(小米应用商店、华为应用市场、阿里应用商店、百度手机助手、腾讯应用宝)

​​本次主要讲解前5个平台上架流程及注意事项(注册登录信息自行准备) 1. 腾讯应用宝:http://open.qq.com/ 2. 阿里应用商店(淘宝手机助手,UC应用商店,豌豆荚):http://open.uc.cn/ 3. 百度手机助手:http://app.baidu.com/ 4. 华为应用市场:http://developer.huaw…

socket阻塞与非阻塞,同步与异步、I/O模型

socket阻塞与非阻塞&#xff0c;同步与异步 1. 概念理解 在进行网络编程时&#xff0c;我们常常见到同步(Sync)/异步(Async)&#xff0c;阻塞(Block)/非阻塞(Unblock)四种调用方式&#xff1a;同步&#xff1a; 所谓同步&#xff0c;就是在发出一个功能调用时&#xff0c;…

linux基于域名的虚拟主机,Nginx虚拟主机应用——基于域名、IP、端口的虚拟主机...

Nginx支持的虚拟主机有三种●基于域名的虚拟主机●基于IP的虚拟主机●基于端口的虚拟主机每一种虚拟主机均可通过“server{}" 配置段实现各自的功能基于域名的虚拟主机实验环境1.基础源码包(无密码):https://pan.baidu.com/s/14WvcmNMC6CFX1SnjHxE7JQ2.CentOS 7版本Linux虚…

解决Chrome谷歌浏览器″Adobe Flash Player 插件已被屏蔽″的问题

​​解决Chrome谷歌浏览器"Adobe Flash Player 插件已被屏蔽"的问题如果你确定在电脑上确实已经安装了 Adobe Flash Player 插件&#xff0c;但是打开网页时仍然提示"已屏蔽 Adobe Flash Player 插件" &#xff0c;你可以试试修改下面这两个选项&#xff0…

powermock模拟对象_使用PowerMock测试对象的内部状态

powermock模拟对象大多数单元测试都集中于测试对象的行为以证明其有效。 这可以通过编写一个JUnit测试来实现&#xff0c;该测试调用对象的公共方法&#xff0c;然后测试这些调用的返回值是否与先前定义的一组期望值匹配。 这是一种非常常见且成功的技术。 但是&#xff0c;不应…

Mono for android,Xamarin点击事件的多种写法

&#xff08;一&#xff09;原本java的写法&#xff08;相信很多是学过java的&#xff09;&#xff1a; 需要实现接口View.IOnClickListener&#xff0c;最好也继承类&#xff1a;Activity&#xff0c;因为View.IOnClickListener接口又继承了IJavaObject, IDisposable接口&…

51个赚钱的好方法

有很多方法赚钱。你可以在家工作&#xff0c;你可以做各种自由职业者&#xff0c;你可以在博客&#xff0c;也可以只保存。时间紧迫&#xff0c;我不知道任何人谁不喜欢做一些额外的现金。所以&#xff0c;我得给你51如何赚钱最好的方法的列表。 1.作为自由职业者的工作 工作作…

一句话木马绕过linux安全模式,一句话木马(webshell)是如何执行命令的

在很多的渗透过程中&#xff0c;渗透人员会上传一句话木马(简称webshell)到目前web服务目录继而提权获取系统权限&#xff0c;不论asp、php、jsp、aspx都是如此&#xff0c;那么一句话木马到底是如何执行的呢&#xff0c;下面我们就对webshell进行一个简单的分析。首先我们先看…

如何从finally块访问方法的结果值

尽管JVM是基于堆栈的计算机 &#xff0c;但Java语言实际上并没有为您提供任何访问该堆栈的方法。 即使有时&#xff0c;在极少数情况下&#xff0c;它也会非常有用。 一个例子 方法结果值放在堆栈中。 如果查看以下示例&#xff1a; public int method() {if (something)retu…

第六章 Qt布局管理器Layout

第六章 Qt布局管理器Layout 大家有没有发现一个现象&#xff0c;我们放置一个组件&#xff0c;给组件最原始的定位是给出这个控件的坐标和宽高值&#xff0c;这样Qt就知道这个组件的位置。当用户改变窗口的大小&#xff0c;组件还静静地呆在原来的位置&#xff0c;这有时候显然…

kafka集群状态Linux,Kafka集群配置

本文只要讲述Kafka集群的配置事项&#xff0c;包括zookeeper集群的配置。本文讲述的前提是kafka和zookeeper在单机情况下已正确安装和配置。如有疑问&#xff0c;可以参考《Linux(CentOS)中常用软件安装&#xff0c;使用及异常——Zookeeper, Kafka》。假设集群中有三台机器, i…

【APICloud系列|36】小米应用商店可以检测同个应用不同版本信息

在小米应用商店上架的信息 在其他应用商店上架的信息&#xff0c;比如应用宝 小米发过来的友好提示邮件&#xff1a;

VLAN的Hybrid和Trunk端口有何区别

有网友问这样一个问题&#xff1a; vlan 1 vlan 2 vlan 3 vlan 4 vlan 5 interface Ethernet0/1 port link-type hybrid port hybrid vlan 1 to 4 untagged port hybrid pvid vlan 2 interface Ethernet0/2 port link-type hybrid port hybrid vlan 3 to 5 untagged port hybri…