Java配列アルゴリズムの逆、コピー、検索の研究-28日間の研究ノート

演習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()メソッドで2つの変数array1とarray2を宣言します。これらはint []型の配列です。

(2)中括弧{}を使用して、array1を8つの素数(2、3、5、7、11、13、17、19)に初期化します。

(3)array1の内容を表示します。

(4)array1に等しいarray2変数を割り当て、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();
	}
}

おすすめ

転載: blog.csdn.net/yibai_/article/details/115287634