1、查找某个整数
定义一个长度为10的整形数组nums,循环输入10个整数,然后将输入一个整数,查找此整数,找到并输出下标,没找到给出提示
package day01_text1;
import java.util.Scanner;
public class demo03 {
/*定义一个长度为10的整形数组nums,循环输入10个整数,
* 然后将输入一个整数,查找此整数,找到并输出下标,没找到给出提示
*/
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int[]nums= new int[10];
System.out.println("请输入10个整数");
for(int i=0;i<nums.length;i++)
nums[i]=input.nextInt();//用nums的下标i来接受输入的10个数
System.out.println("请输入要查找的数");
int chaZhaoDeShu =input.nextInt();
for(int i=0;i<nums.length;i++) {
if(nums[i]==chaZhaoDeShu) {
System.out.println("找到了,位置下标为"+i);
break;
}else if(i==nums.length-1)//如果比对到最后一次依然没有匹配的,才输出没有找到
System.out.println("没有找到");
}
}
}
代码执行截图:
2 、找出数组的最值
定义一个整型数组长度为10的nums,循环输入10个数,求出他们的最大值,最小值
package day01_text1;
import java.util.Scanner;
public class demo03 {
/* 定义一个整型数组长度为10的nums
* 循环输入10个数,求出他们的最大值,最小值
*/
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int[] nums =new int[10];
System.out.println("请输入10个数");
for(int i=0;i<nums.length;i++)
nums[i] =input.nextInt();
int zuiDaZhi=nums[0];
int zuiXiaoZhi=nums[0];
for(int i=0;i<nums.length;i++)
zuiDaZhi=zuiDaZhi>nums[i]?zuiDaZhi:nums[i];
System.out.println("最大值为:"+zuiDaZhi);
for(int i=0;i<nums.length;i++)
zuiXiaoZhi=zuiXiaoZhi<nums[i]?zuiXiaoZhi:nums[i];
System.out.println("最小值为:"+zuiXiaoZhi);
}
}
代码执行截图:
3 、两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出他们的数组下标
假设每种输入只会对应一个答案,不能重复利用这个数组中同样的元素。
示例:
给定nums = [2, 7, 11, 15], target = 9
因为nums[0] + nums[1] = 2 + 7 = 9
所以输出 0,1
package day01_text1;
public class demo03 {
/*两数之和
*给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并输出他们的数组下标
*假设每种输入只会对应一个答案,不能重复利用这个数组中同样的元素。
*示例:
*给定nums = [2, 7, 11, 15], target = 9
*因为nums[0] + nums[1] = 2 + 7 = 9
*所以输出 0,1
*/
public static void main(String[] args) {
int[] nums = {2,7,11,15};
int target=26;//目标值
boolean zhenJia =false;//用来判断是否找到,置初始值为false
for(int i=0;i<nums.length;i++) {
for(int j=i+1;j<nums.length;j++) {//j从i+1开始,就不会重复利用
if(nums[i]+nums[j]==target) {
System.out.println("找到了相对应的两个值,下标分别是"+i+"和"+j);
zhenJia =true;//找到了则置为true
break;
}
}
}
if(!zhenJia)
System.out.println("没有找到相对应的两个值");
}
}
代码执行截图:
4、排序并查找
对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找元素6并输出排序后的下标
package day01_text1;
public class demo03 {
/*对数组{1,3,9,5,6,7,15,4,8}进行排序,
*然后使用二分查找元素6并输出排序后的下标。
*/
public static void main(String[] args) {
int[] nums = {1,3,9,5,6,7,15,4,8};
int temp;//创建一个第三方变量用来转换数值
for(int i=0;i<nums.length-1;i++) {//外层循环-1
for(int j=0;j<nums.length-i-1;j++) {//内层循环-i-1
if(nums[j]>nums[j+1]){
temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("排序后顺序为:");
for(int i=0;i<nums.length;i++) {
System.out.print("\t"+nums[i]);
}
int minIndex=0;//最小坐标
int maxIndex=nums.length-1;//最大坐标
int centerIndex=(minIndex+maxIndex)/2;//中间坐标
int chaZhao =6;//要查找的数字
while(true) {
if(nums[centerIndex]>chaZhao) {
maxIndex=centerIndex-1;
}
else if(nums[centerIndex]<chaZhao) {
minIndex=centerIndex+1;
}else {
break;
}
if(minIndex>maxIndex) {
centerIndex=-1;
break;
}
centerIndex=(minIndex+maxIndex)/2;
}
if(centerIndex==-1) {
System.out.println("\n"+"没找到");
}else
System.out.println("\n"+"找到了,下标为"+centerIndex);
}
}
代码执行截图:
5、移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
package day01_text1;
public class demo03 {
/*移动零
*给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
*示例:
*输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
*/
public static int[] hanShu(int[] nums) {
int index1=0;//定义两个下标索引
int index2=0;//同时指向第一个下标
while(index2<nums.length) {
if(nums[index2]!=0) {//如果索引2指向的!=0
nums[index1]=nums[index2];//则索引1=索引2
index1++;//两个索引同时指向下一个和下标
index2++;
}else {//如果索引2=0,则索引1不动,索引2指向下一个下标
index2++;
}
}
for(int i=index1;i<nums.length;i++) {
nums[i]=0;//从索引1开始到最后一个都置为0
}
return nums;
}
public static void main(String[] args) {
int[] nums= {0,1,0,3,12,8,2,0,};
int[] newNums=hanShu(nums);//调用函数
for(int i=0;i<newNums.length;i++) {
System.out.print("\t"+nums[i]);
}
}
}
代码执行结果