当前位置: 代码迷 >> 综合 >> 【JavaSE】数组及其使用练习(交换两数、二分查找、冒泡排序等)
  详细解决方案

【JavaSE】数组及其使用练习(交换两数、二分查找、冒泡排序等)

热度:34   发布时间:2023-11-26 15:34:34.0

目录

前言

一、数组的创建以及使用

1. 创建数组

2.数组的遍历

3.数组练习

3.1交换两个数

3.1冒泡排序

3.2二分查找

二、Arrays类

三、多维数组

总结


前言

        数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。具体的使用如以下几个方面。

一、数组的创建以及使用

1. 创建数组

        Java语言使用new来创建数组。使用方法如下

import java.util.Arrays;public class arraydemo {public static void main(String[] args) {long[] a;//System.out.println(a);变量 'a' 可能尚未初始化a=new long[10];a[9]=1;System.out.println(Arrays.toString(a));long[] b={1,2,34,4,3,5,6,6};System.out.println(Arrays.toString(b));long[] c;//c={1,23,3,4,5,6,7}; 此处不允许数组初始值设定项c=new long[]{1,23,4,5,6,7,8};System.out.println(Arrays.toString(c));long[] d=c;d[1]=2;System.out.println(Arrays.toString(d));}
}

2.数组的遍历

        Java对于数组的遍历有了新的方法,它能在不使用下标的情况下遍历数组。使用方法如下:

public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (double element: myList) {System.out.println(element);}}
}

3.数组练习

3.1交换两个数

代码如下

public class SwapDemo {private static void swap(double[] array, int a ,int b){double t=array[a];array[a]=array[b];array[b]= t;}public static void main(String[] args) {double a=1.0;double b=100.0;double[] array={a,b};System.out.println(a);System.out.println(b);swap(array,0,1);System.out.println(array[0]);System.out.println(array[1]);}
}

3.1冒泡排序

代码如下

public class BubbleSort {private static void swap(long[] array,int a,int b){long t=array[a];array[a]=array[b];array[b]= t;}public static void bubblesort(long[] array){for(int i=0;i<array.length-1;i++){for(int j=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){swap(array,j,j+1);}}}}public static void main(String[] args) {long[] a={9,3,7,8,5,4,3,2,8};bubblesort(a);for (long l : a) {System.out.println(l);}}
}

3.2二分查找

代码如下

import java.util.Arrays;public class BinarySearch {public static int binarySearch(long[] array,long key){int left=0,right= array.length-1;while(left<=right){int search=(left+right)/2;if(array[search]<key){left=search+1;}if(array[search]>key){right=search-1;}if(array[search]==key){return search;}}return -1;}public static void main(String[] args) {long[] array = {1, 4, 3, 2, 5, 7, 6, 9, 8, 1, 11, 10};BubbleSort.bubblesort(array);System.out.println(Arrays.toString(array));System.out.println(binarySearch(array,5));}
}

二、Arrays类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 对数组排序:通过 sort 方法。
  • 查找数组元素:通过binarySearch方法
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 填充数组:通过 fill 方法
  • 拷贝数组:通过 copyOf 方法
  • 转换成字符串:通过 toString 方法

具体的使用方法如下所示

import java.util.Arrays;public class UseArray {public static void main1(String[] args) {long[] array={1,3,6,8,5,9,4};Arrays.sort(array,1,5);for (long l : array) {System.out.println(l);}}public static void main2(String[] args) {long[] array={1,2,3,4,5,6,7,8,9,10};System.out.println(Arrays.binarySearch(array, 5));}public static void main3(String[] args) {long[] array1={1,2,3,4,5,6,7,8,9,10};long[] array2={1,2,3,4,5,6,7,8,9,10};System.out.println(Arrays.equals(array1, array2));//如果使用==则是说明两边是否指向同一个对象}public static void main4(String[] args) {long[] array={1,2,3,43,43,5,23};Arrays.fill(array,5);for (long l : array) {System.out.println(l);}}public static void main5(String[] args) {long[] array={1,2,3,4,5,65,7,4,67};long[] longs = Arrays.copyOf(array, 6);for (long l : longs) {System.out.println(l);}System.out.println("-----------------------------------------");long[] longs1 = Arrays.copyOfRange(array, 2, 5);for (long l : longs1) {System.out.println(l);}System.out.println("-----------------------------------------");long[] longs2 = Arrays.copyOfRange(array, 2, 11);for (long l : longs2) {System.out.println(l);}//long[] longs3 = Arrays.copyOfRange(array, -1, 5);}public static void main(String[] args) {long[] array={1,2,3,4,5,6,7,78};System.out.println(array);String s = Arrays.toString(array);System.out.println(s);}
}

其中部分方法的实现如下

1.sort(略)

2.binarySearch(略)

3. equals(略)

4. fill(略)

5.copyOfRange(没有写copyOf)

import java.util.Arrays;public class ArrayCopyOf {public static long[] copyofRange(long[] src,int newlength,int fromindex ,int toindex){long[] dest=new long[newlength];for(int i=0;i< Math.min(Math.min(newlength, src.length-fromindex),toindex-fromindex+1);i++){dest[i]=src[i+fromindex];}return dest;}public static void main(String[] args) {long[] array={1,2,3,4,5,6,7,8,9};System.out.println(Arrays.toString(copyofRange(array, 12,3,15)));}
}

6.toString

public class ToString {public static String tostring(long[] array){String r ="[";for (int i = 0; i < array.length-1; i++) {r+=array[i]+",";}if(array.length>=1){r+=array[array.length-1];}r+="]";return r;}public static void main(String[] args) {long[] array={};System.out.println(array);System.out.println(tostring(array));}
}

三、多维数组

        多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

基本使用如下

import java.util.Arrays;public class MultiArray {public static void main(String[] args) {long[][] a={{1,2,3},{4},{5,6,7,8,9},null,{10}};long[][] array=new long[][]{new long[]{1,2},new long[]{1,2,3,4},new long[]{1,2,3}};String[][] s=new String[2][];s[0] = new String[2];s[1] = new String[3];s[0][0] = "Good";s[0][1] = "Luck";s[1][0] = "to";s[1][1] = "you";s[1][2] = "!";System.out.println(a[1][0]);System.out.println(Arrays.toString(array[1]));System.out.println(Arrays.toString(s[0]));System.out.println(Arrays.toString(s[1]));}
}

总结

        体会Java数组和C中的数组不一样的地方。

  相关解决方案