当前位置:   article > 正文

java基础:数组,排序,查找

java基础:数组,排序,查找

数组

数组介绍

可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型

数据类型[] 数组名 = {...};

可以通过数组名.length得到数组的长度

数组使用

数组定义,引用

数据类型 数组名[] = new 数据类型[大小]

通过数组名[下标/索引/index]进行访问如a[2],从0开始

也可以先声明int arr[];

arr = new int

静态初始化 int a[]={...}相当于第一种使用方法

注意事项

  1. 数组是多个相同该数据类型的集合,包括可以有自动转换的数据类型
  2. 数组中的元素可以是任何数据类型包括基本数据类型和引用类型
  3. 数组创建后没有赋值,则默认为0,char为/u0000,boolean为false,String null
  4. 使用数组:先声明再赋值后使用
  5. 从0开始
  6. 数组下标不可越界
  7. 数组属引用类型,数组型数据是对象

数组赋值机制

基本数据类型是拷贝赋值

而数组在默认情况下是引用传递,赋的值是地址

数组拷贝

新创建一个数组new会新开辟一个空间

数组反转

1.交换

2.逆序赋值法

数组扩容

看图思路分析

根据用户的输入进行扩容

数组缩减

排序法(冒泡):

冒泡排序:

  1. public class bubblesort{
  2. public static void main(String[] args){
  3. int[] arr = {3,6,8,5,3,1,9,8,56};
  4. boolean a;
  5. for(int i = 0;i < arr.length - 1;i++)//排n-1个数即可,最后的数一定在顺序上
  6. {
  7. a = false;
  8. for(int j = 0;j < arr.length - 1 - i;j++){//比较时减去已经排序好的数,倒数第二个数会与最后一个比较,故减一
  9. if(arr[j] > arr[j+1]){//从小到大排序
  10. int temp = arr[j];//交换
  11. arr[j] = arr[j+1];
  12. arr[j+1] = temp;
  13. a = true;
  14. }
  15. }
  16. if(!a){//如果a非为真说明没有发生交换已经完成排序,退出程序
  17. break;
  18. }
  19. }
  20. for(int i = 0;i < arr.length;i++){
  21. System.out.print(arr[i] + "\t");
  22. }
  23. }
  24. }

查找

顺序查找

  1. import java.util.Scanner;
  2. public class SeqSearch{
  3. public static void main(String[] args){
  4. //编写一个main方法
  5. String[] name = {"红楼梦","水浒传","三国演义","西游记"};
  6. Scanner myScanner = new Scanner(System.in);
  7. System.out.println("请输入名字:");
  8. String findname = myScanner.next();
  9. //遍历数组
  10. int index = -1;//用于检测是否找到
  11. for(int i = 0 ;i < name.length;i++){
  12. //比较 字符串比较方法equals
  13. if(findname.equals(name[i])){
  14. System.out.println("恭喜你找到" + findname);
  15. System.out.println("下表为:" + i);
  16. index = i;//找到了就会改变index
  17. break;
  18. }
  19. }
  20. if(index == -1){
  21. System.out.println("sorry!没找到");
  22. }
  23. }
  24. }

二分查找

后续

二维数组

入门

  1. import java.util.Scanner;
  2. public class TwoDimensionalArray{
  3. public static void main(String[] args){
  4. //编写一个main方法
  5. //二维数组
  6. //定义上int[][]
  7. //理解:原来的一维数组的每个元素是一维数组
  8. int[][] arr = {{0,0,0,1,1,1,0},
  9. {0,3,5,6,1,5,7,3},
  10. {2,0,4,1,0,3,1,2},
  11. {1,0,3,4,5,6,8}};
  12. //访问arr[i][j],注意从0开始编号
  13. //输出二维数组
  14. System.out.println("二维数组的个数=" + arr.length);//换行
  15. System.out.println("第三个一维数组的第四个值为" + arr[2][3]);//换行
  16. //输出二维图形
  17. for(int i = 0;i < arr.length;i++){
  18. //遍历二维数组的每个元素
  19. //arr[i].length得到对应的每一个一维数组
  20. for(int j = 0;j < arr[i].length;j++){
  21. System.out.print(arr[i][j]+"\t");
  22. }
  23. System.out.println();//换行
  24. }
  25. }
  26. }

使用

1.语法:类型[][] 数组名 = new 类型[大小][大小]

也可int arr[][];//先声明

arr = new int[2][3];//在创建

2.二维数组在内存的存在形式***

3.定义一个二维数组为{{1},{2,2},{3,3,3}}

  1. public class TwoDimensionalArray
  2. {
  3. public static void main(String[] args)
  4. {
  5. //编写一个main方法
  6. int[][] arr = new int[3][];//
  7. for(int i = 0;i < arr.length;i++){
  8. //给每一个一维数组开空间
  9. //如果不开,那么arr[i]是null
  10. arr[i] = new int[i + 1];//第i+1个一维数组的大小为i+1
  11. //遍历每个一维数组并赋值
  12. for(int j = 0;j < arr[i].length;j++){
  13. arr[i][j] = i + 1;
  14. }
  15. }
  16. for(int i = 0;i < arr.length;i++)
  17. {
  18. //遍历二维数组的每个元素
  19. for(int j = 0;j < arr[i].length;j++)
  20. {
  21. System.out.print(arr[i][j]+"\t");//输出1 2 2 3 3 3
  22. }
  23. }
  24. }
  25. }

4.静态初始化

如:int[][] arr = {{1,1,1},{8,9,8},{100}};

杨辉三角

  1. public class YangHui{
  2. public static void main(String[] args){
  3. /*打印杨辉三角7
  4. 1
  5. 11
  6. 121
  7. 1331
  8. 14641
  9. ...找规律,2=1+1,3=1+2,2=2+1,4=1+4,6=3+3,...体现在数组中即arr[i][j]=arr[i-1][j-1]+arr[i-1]arr[j]
  10. */
  11. int[][] yanghui = new int[7][];
  12. for(int i = 0;i < yanghui.length;i++){
  13. //需要给每一维数组开辟空间
  14. yanghui[i] = new int[i + 1];
  15. //给每一行赋值
  16. for(int j = 0;j < yanghui[i].length;j++){
  17. if(j == 0 || j == yanghui[i].length - 1){
  18. yanghui[i][j] = 1;
  19. } else {
  20. yanghui[i][j] = yanghui[i-1][j] + yanghui[i-1][j-1];
  21. }
  22. }
  23. }//输出
  24. for(int i = 0;i < yanghui.length;i++){
  25. for(int j = 0;j < yanghui[i].length;j++){
  26. System.out.print(yanghui[i][j] + "\t");
  27. }
  28. System.out.println();//换行
  29. }
  30. }
  31. }

二维数组使用细节和注意事项

一维数组可以 int[] x or int x[]

二维数组int[][] y or int[] y[] 或者int y[][]

二维数组实际上是由多个一维数组组成的,他的各个一维数组长度可相同可不同

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/872761
推荐阅读
相关标签
  

闽ICP备14008679号