练习1
package com.xin.Array;
public class Arraytext6
{
public void text(){
//数组的反转
//1.创建一个数组
String[] array = {"AA","BB","CC","GG","TT","HH"};
//数组的复制一般通过for循环
String[] array2 = new String[array.length];
for(int i=0;i < 0;i++) {
array2[i] = array[i];
}
//2.进行数组的反转操作
for(int i=0,j = array.length-1;i < j; i++, j--) {
//3.定义一个空白变量然后跟第一个和最后一个进行交换
String temp = array[i];
array[i] = array[j];
array[j] = temp;
}
//4.遍历数组
for(int i=0;i < array.length;i++){
System.out.print(array[i]+"\t");
}System.out.println();
//数组的查找 线性查找
//1.先定义一个需要查找的值
String dest = "CC";
//2.通过for循环查找
boolean isFlag = true;
for(int i = 0;i< array.length;i++){
//3.通过布尔值来当做一个开关,如果找到那个flag就会变成false
//没有找到flag没有变化就直接输出
//因为是字符串不能使用 == 只能使用equals()方法
if(dest.equals(array[i])){
System.out.print("找到了指定元素"+i);
isFlag =false;
break;
}
}
if(isFlag == true){ //也可以直接写isFlag
System.out.println("没有找到");
}
}
//二分法查找 注意使用二分法需要是数组有序
public void text1(){
//1.创建一个数组,且有序
int[] array3 = {-70,-50,2,66,99,145,557,945};
//2.定义 需要查找的数 第一位, 最后一位
int dest1 = 5;
int first = 0;
int end = array3.length-1;
boolean flag = true;
// 3.通过while循环判断
while(first <= end){ //不能超过最后且等于
//定义中间位
int mid = (first + end) / 2;
if(dest1 == array3[mid]){ //数字刚好为中间的数
System.out.println("找到了指定元素地址为"+mid);
flag = false;
break;
}else if(dest1 < array3[mid]){
end = mid - 1;//如果比中间值小,end取中间值前一个数
}else{ //dest1 > array3[mid] 比mid大,first取mid的后一个数
first = mid + 1; //一直循环直到找到mid == dest1
}
//还是需要一个boolean来判断
}
//如果没有找到 flag还是为true输出没找到
if(flag){
System.out.println("没有找到");
}
}
}
练习2
使用简单数组.
(1)创建一个名为ArrayTest5的类,在main()方法中声明array1和array2两个变量,他们是int[ ]类型的数组。
(2)使用大括号{},把array1初始 化为8个素数: 2,3,5,7,11,13,17,19.
(3)显示array1的内容。
(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=O,array[2]=2)。打印出array1.
思考: array1和array2是什么关系?
拓展:修改题目,实现array2对array1数组的复制
package com.xin.Array;
public class ArrayText5
{
/*
(1)创建一个名为ArrayTest5的类,
在text方法中声明array1和array2两个变量,
他们是int[]类型的数组。
(2)使用大括号{},把array1初始 化为8个素数: 2,3,5,7,11,13,17,19.
(3)显示array1的内容。
(4)赋值array2变量等于array1,修改array2中的偶索 引元素,使其等于索引值(如array[0]=O,array[2]=2)。打印出array1
思考: array1和array2是什么关系?
拓展:修改题目,实现array2对array1数组的复制
*/
public void text(){
//1.声明array1与array2
int[] array1,array2;
//2.创建array1数组并且赋值
array1 = new int[] {2,3,5,7,11,13,17,19};
//7.所以需要创建array2
array2 = new int[array1.length];
//3.打印数组
for(int a : array1 ){
System.out.print(a+"\t");
}System.out.println();
//4.赋值array2变量等于array1
//从结果可知 array2 = array1
//只是单纯的赋地址值使两个数组同样指向一个地址值
//array2 = array1;
for (int i=0;i < array1.length;i++) {
array2[i] = array1[i];
}
//5.修改array2中的偶索引元素
//使其等于索引值(如array[0]=O,array[2]=2)。打印出array1
for(int i = 0;i<array1.length;i++){
if(i % 2 == 0){
array2[i] = i;
}
}
//6.重新遍历array1数组
for(int a : array1 ){
System.out.print(a+"\t");
}System.out.println();
}
}