首页 > 其他分享 >数组

数组

时间:2024-08-06 09:38:25浏览次数:6  
标签:arr int 元素 System 数组 排序

数组概念
Java数组是一种数据结构,用于在计算机内存中连续存储相同类型的数据。数组中的每个元素可以通过索引来访问,索引通常是从0开始的。数组是Java中用于处理集合的基础,它提供了一种方式来存储和操作固定大小的同类型数据项的集合。
一维数组

数组的声明和创建

在Java中,你可以通过以下方式声明和创建数组:

// 声明一个整型数组变量,但没有创建数组
int[] numbers;

// 创建一个长度为5的整型数组,并初始化为0
numbers = new int[5];

// 声明并初始化一个整型数组
int[] anotherNumbers = {1, 2, 3, 4, 5};

// 声明并初始化一个字符串数组
String[] names = {"Alice", "Bob", "Charlie"};

三种格式:

1.(默认初始值)数据类型[ ]数组名 = new 数据类型 [ 数据的个数]

int [ ] money = new int[100];

2.(赋予初始值)数据类型[ ]数组名 = new 数组类型 [ ]{数据1,数据2,数据3,...}

int [ ] money = new int [ ]{ 100,200,300}

3.数据类型 [ ] 数组名 ={数据1,数据2,数据3}

int [ ] money = {100,200,300}

访问数组元素

数组越界 编译不会出错 运行会报错

你可以通过索引来访问数组中的元素,如下所示:

int secondNumber = numbers[1]; // 访问数组中的第二个元素(索引为1)
System.out.println(secondNumber);

遍历数组

你可以使用循环来遍历数组中的所有元素,如下所示:

for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}

或者使用增强的for循环(也称为“for-each”循环):

for (int num : numbers) {
System.out.println(num);
}

注意:在Java中,数组是引用类型,数组变量实际上存储的是对数组对象的引用,而不是数组本身。因此,当你将一个数组变量赋值给另一个数组变量时,你实际上是在复制引用,而不是数组的内容。如果你希望复制数组的内容,你需要手动创建一个新数组,并将原始数组的元素复制到新数组中。

冒泡排序法

注:1.肯定是两个for循环

​ 2.边界值

(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。

下面是Java实现冒泡排序的一个基本例子:

public class BubbleSortExample {
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
System.out.println("Sorted array");
printArray(arr);
}

// 冒泡排序函数
static void bubbleSort(int arr[]) {
int n = arr.length;
for (int i = 0; i < n-1; i++) //两两比较,最后一个是无法比较的 for (int j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1]) {
// 交换 arr[j+1] 和 arr[j]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}

// 打印数组函数
static void printArray(int arr[]) {
int n = arr.length;
for (int i=0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}

}

在这个例子中,bubbleSort 方法接受一个整数数组作为参数,并使用冒泡排序算法对其进行排序。排序过程是通过两层嵌套的for循环实现的,外层循环控制排序的总轮数,内层循环进行实际的比较和交换操作。在内层循环中,如果当前元素比下一个元素大,则交换这两个元素的位置。

printArray 方法用于打印排序后的数组。

需要注意的是,冒泡排序的时间复杂度为O(n^2),在数据规模较大时效率较低,因此它更适用于数据规模较小的情况或作为教学示例。在实际应用中,通常会选择更高效的排序算法,如快速排序、归并排序等。

标签:arr,int,元素,System,数组,排序
From: https://www.cnblogs.com/yangcurry/p/18344535

相关文章

  • 仓颉编程语言入门 -- Array数组详解
    仓颉编程语言入门–Array数组详解一.如何创建Array数组我们可以使用Array类型来构造单一元素类型,有序序列的数据。1.仓颉使用Array来表示Array类型。T表示Array的元素类型,T可以是任意类型,类似于泛型的概念vararr:Array<String>=["你好","仓颉"]va......
  • 深圳大学-电信院-C程序设计实验-数组、函数、结构体的综合使用
    实验目的(1)进一步掌握数组的定义与使用;进一步掌握函数的定义和函数调用方法;(2)学习和掌握结构体的定义和使用方法;(3)进一步掌握C语言的编程方法;学习动画程序的基本设计思想和方法。实验内容本实验编写一个在控制台窗口中,在不考虑重力的条件下,模拟一组弹球在一个二......
  • 数组
    数组的定义1.数组也是对象2.数组的定义:​数组是相同类型的有序集合,其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来进行访问3.数组的四个基本特点:1.长度确定。数组一旦被创建,它的大小是不可以被改变的。2.元素必须是相同类型。其元素必须是相同类型,不允许出......
  • 数组的复制方法
    arraycopy方法(将元素复制)这句代码使用了System.arraycopy方法,用于将一个数组中的元素复制到另一个数组中。具体来说,这句代码的作用是从原数组arr中删除第一个元素和最后一个元素,并将剩下的元素复制到新数组newArr中。以下是对这句代码的详细解释:System.arraycopy(arr,1,......
  • 数组的算法
    数组的算法在Java中,数组是一种基本的数据结构,常用于实现各种算法。以下是一些常见的与数组相关的算法:排序算法:冒泡排序(BubbleSort)选择排序(SelectionSort)插入排序(InsertionSort)快速排序(QuickSort)归并排序(MergeSort)堆排序(HeapSort)搜索算法:线性搜索(LinearS......
  • 数组中生成随机数(Random)
    数组中生成随机数(Random)要通过随机数索引来访问数组中的某一个元素,可以使用Java中的Random类来生成一个随机数,然后用这个随机数作为索引来访问数组。以下是一个示例代码,展示了如何实现这一点:importjava.util.Random;publicclassRandomArrayAccess{publicstaticvoidmai......
  • 数组:性能优化与错误处理的艺术
    引言在编程过程中,我们会发现这么一件事,有时候需要用到很多变量,十个、百个,甚至千个,如果一个个变量都去声明的话,那么工作量是非常大的,也导致代码很臃肿,所以这个时候数组就出现了。数组可以用来存储一系列数据类型一致的数据,这让我们在操作数据的时候会来的更加简易高效,接下来......
  • 【动态规划】力扣918. 环形子数组的最大和
    给定一个长度为n的环形整数数组nums,返回nums的非空子数组的最大可能和。环形数组意味着数组的末端将会与开头相连呈环状。形式上,nums[i]的下一个元素是nums[(i+1)%n],nums[i]的前一个元素是nums[(i-1+n)%n]。子数组最多只能包含固定缓冲区nu......
  • [学习笔记]后缀数组(Suffix Array)
    后缀数组(suffixarray)是一个通过对字符串的所有后缀经过排序后得到的数组。后缀数组被Manber和Myers于1990年提出,作为对后缀树的一种替代,更简单以及节省空间。它们也被GastonGonnet于1987年独立发现,并命名为“PAT数组”。后缀数组有很多奇妙的性质,这些性质可以帮......
  • js动态构建属性名并访问其对象属性(动态的对象或着数组名)
    js动态构建属性名并访问其对象属性(动态属性访问)在开发中有时会遇到这种情况:你写了很多的函数,写完发现他们的操作逻辑都是相同的,但是原始数据不同,如:/*获取区域,道路拥堵指数对应的色标*/makeCongestionColor(num){letoutColor='#fff'letcol......