亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JAVA數(shù)組練習(xí)題實(shí)例講解

 更新時(shí)間:2023年08月30日 10:44:57   作者:小胡_不糊涂  
這篇文章主要給大家介紹了關(guān)于JAVA數(shù)組練習(xí)題的相關(guān)資料,這是個(gè)人總結(jié)的一些關(guān)于java數(shù)組的練習(xí)題,文中通過(guò)代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下

1. 數(shù)組轉(zhuǎn)字符串

toString() :可以將Array 對(duì)象轉(zhuǎn)換為字符串。

//語(yǔ)法格式:
arraylist.toString()

實(shí)例1:

import java.util.Arrays;//調(diào)用Arrays類,包含了常用的數(shù)組操作
public class test {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        String newArr = Arrays.toString(arr);
        System.out.println(newArr);
    }
}

?? 運(yùn)行結(jié)果:

實(shí)例2:

import java.util.ArrayList;
public class test {
    public static void main(String[] args) {
          // 創(chuàng)建一個(gè)動(dòng)態(tài)數(shù)組
           ArrayList<String> sites = new ArrayList<>();
            sites.add("Runoob");
            sites.add("Google");
            sites.add("Wiki");
            sites.add("Taobao");
            System.out.println("網(wǎng)站列表: " + sites);
             // 將ArrayList轉(zhuǎn)換為String類型
             String list = sites.toString();
             System.out.println("String: " + list);
            }

?? 運(yùn)行結(jié)果:

2. 數(shù)組拷貝

實(shí)例1:

import java.util.Arrays;
public class test {
    public static void func(){
        // newArr和arr引用的是同一個(gè)數(shù)組
        // 因此newArr修改空間中內(nèi)容之后,arr也可以看到修改的結(jié)果
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = arr;
        newArr[0] = 10;
        System.out.println("newArr: " + Arrays.toString(arr));
}
public static void main(String[] args) {
        func();
    }

?? 圖解:

?? 運(yùn)行結(jié)果:

實(shí)例2:使用Arrays中copyOf方法完成數(shù)組的拷貝

import java.util.Arrays;
public class test {
    public static void func(){
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = arr;
        // copyOf方法在進(jìn)行數(shù)組拷貝時(shí),創(chuàng)建了一個(gè)新的數(shù)組
        // arr和newArr引用的不是同一個(gè)數(shù)組
        arr[0] = 1;
        newArr = Arrays.copyOf(arr, arr.length);
        System.out.println("newArr: " + Arrays.toString(newArr));
		}
	public static void main(String[] args) {
        func();
    }
 }

?? 圖解:

?? 運(yùn)行結(jié)果:

實(shí)例3:拷貝某個(gè)范圍

import java.util.Arrays;
public class test {
    public static void func(){
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = arr;
        int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("newArr2: " + Arrays.toString(newArr2));
     }
     public static void main(String[] args) {
        func();
    }
}

注: 數(shù)組當(dāng)中存儲(chǔ)的是基本類型數(shù)據(jù)時(shí),不論怎么拷貝基本都不會(huì)出現(xiàn)什么問(wèn)題,但如果存儲(chǔ)的是引用數(shù)據(jù)類型,拷貝時(shí)需要考慮深淺拷貝的問(wèn)題

模擬拷貝數(shù)組:

import java.util.Arrays;
public class test {
	//copyOf方法拷貝數(shù)組
    public static int[] copyOf(int[] arr) {
        int[] ret = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            ret[i] = arr[i];
        }
        return ret;
    }
    public static void main(String[] args) {
        int[] a={1,4,5,6,9};
        int[] Array=copyOf(a);
        for(int i=0;i<Array.length;i++) {
            System.out.println(Array[i]);
        }
    }

?? 運(yùn)行結(jié)果:

3. 求數(shù)組中的元素的平均值

給定一個(gè)整型數(shù)組,求平均值

public class test {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        System.out.println(avg(arr));//輸出:3.0
    }
    public static double avg(int[] arr) {
        int sum = 0;
        for (int x : arr) {//遍歷數(shù)組
            sum += x;
        }
        return (double)sum / (double)arr.length;
    }
}

4. 順序查找數(shù)組中指定元素

給定一個(gè)數(shù)組,再給定一個(gè)元素,找出該元素在數(shù)組中的位置。

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
         int[] arr = {1,2,3,10,5,6};
        Scanner scanner=new Scanner(System.in);//創(chuàng)建一個(gè)Scanner對(duì)象
        int num=scanner.nextInt();//讀取用戶輸入
        System.out.println(find(arr, num));
    }
    public static int find(int[] arr, int data) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == data) {
                return i;//返回下標(biāo)
            }
        }
        return -1; // 表示沒(méi)有找到
    }
}

?? 運(yùn)行結(jié)果:

5. 二分查找數(shù)組中指定元素

二分查找僅適用于有序查找

什么是有序數(shù)組?
有序分為 “升序” 和 “降序”
如 1 2 3 4 , 依次遞增即為升序.
如 4 3 2 1 , 依次遞減即為降序

以升序數(shù)組為例,二分查找的思路是先取中間位置的元素,然后使用待查找元素與數(shù)組中間元素進(jìn)行比較:

  • 如果相等,即找到了返回該元素在數(shù)組中的下標(biāo)
  • 如果小于,以類似方式到數(shù)組左半側(cè)查找
  • 如果大于,以類似方式到數(shù)組右半側(cè)查找

代碼示例:

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        System.out.print("請(qǐng)輸入你要查找的數(shù)字:");
        Scanner scanner=new Scanner(System.in);//創(chuàng)建一個(gè)Scanner對(duì)象
        int num=scanner.nextInt();
        System.out.println(binarySearch(arr, num));
    }
    public static int binarySearch(int[] arr, int toFind) {
        int left = 0;
        int right = arr.length - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (toFind < arr[mid]) {
            // 去左側(cè)區(qū)間找
                right = mid - 1;
            } else if (toFind > arr[mid]) {
            // 去右側(cè)區(qū)間找
                left = mid + 1;
            } else {
            // 相等, 說(shuō)明找到了
                return mid;
            }
        }
            // 循環(huán)結(jié)束, 說(shuō)明沒(méi)找到
        return -1;
    }
}

?? 運(yùn)行結(jié)果:

??隨著數(shù)組元素個(gè)數(shù)越多, 二分的優(yōu)勢(shì)就越大 

6. 數(shù)組排序(冒泡排序)

給定一個(gè)數(shù)組,讓數(shù)組升序 (降序) 排序

算法思路: 假設(shè)排升序

  1. 將數(shù)組中相鄰元素從前往后依次進(jìn)行比較,如果前一個(gè)元素比后一個(gè)元素大,則交換,一趟下來(lái)后最大元素就在數(shù)組的末尾
  2. 依次從上上述過(guò)程,直到數(shù)組中所有的元素都排列好

import java.util.Arrays;
public class test {
public static void main(String[] args) {
        int[] arr = {9,5,7,8,6,6,7};;
        bubbleSort(arr);//調(diào)用方法
        System.out.println(Arrays.toString(arr));
        }
    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 1; j < arr.length-i; j++) {
                //前一個(gè)與后一個(gè)比較,可能的話需要交換位置
                if (arr[j-1] > arr[j]) {
                    int tmp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = tmp;
                }
            }
        } 
    }
}

?? 運(yùn)行結(jié)果:

但是冒泡排序性能較低。在Java 中內(nèi)置了更高效的排序算法:

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] arr = {9,5,7,8,6,6,7};
        Arrays.sort(arr);//升序排序
        System.out.println(Arrays.toString(arr));
    }

7. 數(shù)組逆序

給定一個(gè)數(shù)組,將里面的元素逆序排列

算法思路:設(shè)定兩個(gè)下標(biāo),分別指向第一個(gè)元素和最后一個(gè)元素,交換兩個(gè)位置的元素,然后讓前一個(gè)下標(biāo)自增,后一個(gè)下標(biāo)自減,循環(huán)繼續(xù)即可。

import java.util.Arrays;
public class test {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4};
        reverse(arr);
        System.out.println(Arrays.toString(arr));//將數(shù)組轉(zhuǎn)化為字符串輸出
    }
    public static void reverse(int[] arr) {
        int left = 0;//指向首元素
        int right = arr.length - 1;//指向最后一個(gè)元素
        while (left < right) {
            //交換元素位置
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            //移動(dòng)下標(biāo)
            left++;
            right--;
        }
    }
}

?? 運(yùn)行結(jié)果:

總結(jié)

到此這篇關(guān)于JAVA數(shù)組練習(xí)題的文章就介紹到這了,更多相關(guān)JAVA數(shù)組練習(xí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論