博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
005Java基础之数组、排序、查找
阅读量:3957 次
发布时间:2019-05-24

本文共 2957 字,大约阅读时间需要 9 分钟。

1、数组

数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。即:数(数据)组(一组)就是一组数据

1、数组的使用

1、数组的定义

数据类型 数组名[] = new 数据类型[大小] 或者 数据类型[]  数组名= new 数据类型[大小] 例如: int[]  a = new int[5] 与 int a[]  = new int[5]是等价的

建议使用== 数据类型[] 数组名= new 数据类型[大小]==这种方式

2、数组的引用

数组名[下标]

3、静态初始化

int[] a = {1,2,3,4,5,6,7,8,9}

4、数组使用注意事项和细节

(1)数组是多个相同类型数据的组合,实现对这些数据的统一管理(2)数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。

(3)数组创建后,如果没有赋值,有默认值int0,short0,byte0,long0,float0.0,double0.0,char\u0000,booleanfalse,Stringnull
(4)使用数组的步骤
1.声明数组并开辟空间
2给数组各个元素赋值
3使用数组
(5)数组的下标是从0开始的。
(6)数组下标必须在指定范围内使用,否则报:下标越界异常,比如:int[]arr=newint[5];则有效下标为0-4
(7)数组属于引用类型,数组型数据是对象(object)

2、数组赋值机制

(1)基本数据类型赋值,这个值就是具体的数据,而且相互不影响。即是值拷贝。intn1=2;intn2=n1;

(2)数组在默认情况下是引用传递,赋的值是地址。
关于基本数据类型赋值方式是值传递,而引用类型赋值是地址传递非常重要在开发中要特别注意
在这里插入图片描述
但有时候我们确实有这样的需要,就是要实现引用类型的值拷贝,修改新的变量后不会影响原来的变量的值。可以这样开辟新的空间,再通过给元素赋予相同值的方法完成。

/** * @author Francis * @create 2021-06-19 18:56 */public class ArrayCopy {
public static void main(String[] args) {
//将int[]arr1={10,20,30};拷贝到arr2数组, // 要求数据空间是独立的. int[] arr1 = {
10, 20, 30}; //创建一个新的数组arr2,开辟新的数据空间 // 大小arr1.length; int[] arr2 = new int[arr1.length]; //遍历arr1,把每个元素拷贝到arr2对应的元素位置 for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i]; } //修改arr2,不会对arr1有影响 arr2[0] = 100; //输出arr1 System.out.println("====arr1的元素===="); for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);//10,20,30 } System.out.println("====arr2的元素===="); for(int i=0;i

3、数组的扩容

思路:定义一个比原来的数组array长度大一个的数组newArray,循环将原来数组array的每个元素的值赋给newArray,并将newArray的最后一个元素给赋予需要的值,最后将newArray赋给array。

4、数组的缩减

思路是数组扩容的逆向

2、排序

排序是将多个数据,依指定的顺序进行排列的过程。

排序的分类:
(1)内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);
(2)外部排序法
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

1、冒泡排序法

冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

在这里插入图片描述

/** * @author Francis * @create 2021-06-20 11:11 */public class BubbleShort {
public static void main(String[] args) {
int[] arr = {
12, 56, 48, 369, -1, -56, 45, 96}; int temp = 0; for (int i = 0; i < arr.length - 1; i++) {
//外层循环是4次 for (int j = 0; j < arr.length - 1 - i; j++) {
//4次比较-3次-2次-1次//如果前面的数>后面的数,就交换 if (arr[j] > arr[j + 1]) {
temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } System.out.println("\n==第" + (i + 1) + "轮=="); } for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + "\t"); } }}

3、查找

在java中,我们常用的查找有两种:

(1)顺序查找
(2)二分查找(要求查找的数组是有序的)

4、二维数组

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

(1)一维数组的声明方式有
:int[] x或者intx[]
(2)二维数组的声明方式有:
==int[][] y或者int[] y[] 或者int y[][]
(3)二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如:map[][]是一个二维数组
(4)二维数组也有动态初始化和静态初始化两种方式

转载地址:http://hixzi.baihongyu.com/

你可能感兴趣的文章
bat备份数据库
查看>>
linux数据库导出结果集且比对 && grep -v ---无法过滤的问题
查看>>
shell函数与自带变量
查看>>
linux下shell获取不到PID
查看>>
sort详解
查看>>
linux,shell中if else if的写法,if elif
查看>>
shell中单引号、双引号、反引号的区别
查看>>
shell脚本死循环方法
查看>>
shell中$*和$@的区别
查看>>
log4cxx 的编译安装过程和使用
查看>>
简单邮件系统程序
查看>>
STL里的multimap使用详解
查看>>
STL 库其中的 std::string用法总结
查看>>
模态对话框的销毁过程与非模态对话的几种销毁方法
查看>>
C++实现http下载 && 24点计算编码风格
查看>>
memcached了解使用和常用命令详解
查看>>
GDB调试各功能总结
查看>>
"undefined reference to" 多种可能出现的问题解决方法
查看>>
类结构定义
查看>>
Windows下关于多线程类 CSemaphore,CMutex,CCriticalSection,CEvent,信号量CSemaphore的使用介绍
查看>>