The study of Java array algorithm reverse, copy, find-28 days study notes

Exercise 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("没有找到");
					}
				}
		
}

Exercise 2

Use simple arrays.

(1) Create a class named ArrayTest5 and declare two variables array1 and array2 in the main() method. They are arrays of type int[ ].

(2) Use braces {} to initialize array1 to 8 prime numbers: 2,3,5,7,11,13,17,19.

(3) Display the content of array1.

(4) Assign the array2 variable equal to array1, modify the even index element in array2 to make it equal to the index value (such as array[0]=O, array[2]=2). Print out array1.

Thinking: What is the relationship between array1 and array2?

Expansion: Modify the title to realize the copy of array2 to 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();
	}
}

Guess you like

Origin blog.csdn.net/yibai_/article/details/115287634