Java 数组算法列题解析
1.声明一个char类型的数组, 从键盘录入6个字符
【1】遍历输出
【2】排序
【3】把char数组转化成一个逆序的数组
总结:分析问题时,先问自己,需要用到什么?
对于这题,第一步:先写一个main方法;
第二步:需要声明一个数组;
第三步:需要用到Scanner的控制台输入;(列如:String tmp=sc.next();定义一个string类型的tmp(我把它理解成堆内存的地址),把从控制台输入的sc对象依次导入到堆内存当中)
这三步我把它理解成构建算法的基石
(1)在第一问当中,当看到问题是遍历输出时,需要立马想到这题我需要用到for循环;
因为定义的是String类型的数组,所以需要用到.charAt(0);
【1】遍历输出
import java.util.Scanner;
public class Test13{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
char[] arr=new char[6]; for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个字母");
String tmp=sc.next();
arr[i]=tmp.charAt(0);
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
【2】排序
当看到排序时,首先想到冒泡算法,在本题中冒泡算法的使用是:两个for循环的嵌套使用,第一个for循环,控制行;第二个for循环,用于两两比较;
我对他的使用方法的理解是:第一个for循环的范围是(arr.length-1);第二个for循环的范围是(arr.length-1-i);
冒泡排序又是升序,所以需要使用 if 的判断语句,
char temp=0;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
【3】把char数组转化成一个逆序的数组
降序输出,
System.out.println();
for(int h=arr.length-1;h>=0;h--){
System.out.print(arr[h]+"\t");
}

2.从键盘输入5句话,将这五句话逆序输出(不需要排序)
运行效果
======================================
大家早上好
明天会更好
北京欢迎你
长城长
太阳出来了
逆序输出
===========================================
太阳出来了
长城长
北京欢迎你
明天会更好
大家早上好
import java.util.Scanner;
public class Test14{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String[] arr=new String[5];
for(int i=0;i<arr.length;i++){
System.out.print("请输入第"+(i+1)+"句话");
arr[i]=sc.next();
}
for(int j=arr.length-1;j>=0;j--){
System.out.println(arr[j]);
}
}
}
3.有一组数分别为18,25,7,36,13,2,89,63求出最小的值,并将最小的数与最小的数所在的下标输出
//运行效果:
//====================================
//最低积分为:2
//最低积分所在的下标为:5
总结:第一步,看到问题首先需要想到,需要列出这个数组 int[] arr={18,25,7,36,13,2,89,63};
第二步: 找最小值需要用到if的表达式,首先需要赋予数组的一个数值为最小值,然后用这个最小值与数组的每一个元素一 一比较,(需要你在for循环前,对最小值和最小值的索引进行赋值)
public class Test14{
public static void main(String[] args){
int[] arr={18,25,7,36,13,2,89,63};
int min=arr[0];
int a=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]<min){
min=arr[i];
a=i;
}
}
System.out.println("最低积分为:"+min);
System.out.println("最低积分所在的下标为:"+a);
}
}
Java 数组算法列题解析的更多相关文章
- JAVA经典算法40题及解答
JAVA经典算法40题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...
- JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
- JAVA经典算法40题(原题+分析)之分析
JAVA经典算法40题(下) [程序1] 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: ...
- JAVA经典算法50题(转)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1] 题目:古典问题:有一对兔子, ...
- JAVA经典算法40题面向过程
JAVA经典算法40题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...
- JAVA经典算法40题(原题+分析)之原题
JAVA经典算法40题(上) [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [程 ...
- java经典算法40题-附带解决代码
前一段时间工作比较闲,每天没有代码敲的日子有点无聊,于是为了保证自己的编程逻辑力的日常清醒,故百度了一些经典的java算法,然后自己思考编程解决问题,虽然那些东西比较基础了,但是有些题目小编看到了也是 ...
- JAVA 数组算法(复制、查找、插入)
一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,5 ...
- JAVA经典算法40题(供面试所用)
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数 ...
随机推荐
- [GO]json解析到结构体
package main import ( "encoding/json" "fmt" ) type IT struct { Company string `j ...
- 安卓利用Handlers,AsyncTask和Loaders运行后台程序
安卓的用户界面线程(user interface thread) 1.1 主线程 安卓修改用户界面并从一个单一用户界面线程中处理输入事件,这个线程也被称作主线程(main thread) Androi ...
- chattr命令锁定账户敏感文件
有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux ...
- java利用HttpClient进行https接口调用
1.为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. import java.security.cert.CertificateException; import ...
- Atcoder 2566 3N Numbers(优先队列优化DP)
問題文N を 1 以上の整数とします. 長さ 3N の数列 a=(a1,a2,…,a3N) があります. すぬけ君は.a からちょうど N 個の要素を取り除き.残った 2N 個の要素を元の順序で並べ. ...
- webstorm的debug模式
F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内, 如果该方法体还有方法,则不会进入该内嵌的方法中 * F8 在 Debug 模式下,进入下一步,如果当前行断点是 ...
- linux 文件系统基本结构
1.Linux文件系统为一个倒转的单根树状结构 2.文件系统的根为"/" 3.文件系统严格区分大小写 4.路径使用"/",与Windows使用"\&q ...
- hyper-v开发包之ddtkh
ddtkh是微软开源社区的项目,实质是.net对象封装的一系列powershell命令,在结构上更直观更易用.它集成scvmm虚拟机管理.scom虚拟机资源监控和DPM数据保护等几种功能包.
- Entity Framework 高性能 泛型缓存+动态Lambda
前言:自学CSharp挺长时间的了,这是我第一编博客,跟大家分享一下.如有不足地方请多多包涵,也欢迎大家提出更好的意见,下面开始进入正题. 一.泛型缓存 1.概念:1.泛型(泛型也是一种推断类型,从而 ...
- SprngBoot对静态资源的映射
$.对前端js类库和框架的引用 使用webjars打包成jar的形式进行引用 webjars地址:https://www.webjars.org/; 选择使用版本-- > 选择管理方式--& ...