您的位置 首页 java

Java数组以及数组的遍历和排序算法

数组(Array)定义:相同类型数据的集合。

数组按照使用可以分为:一维数组、二维数组和多维数组。


1、数组的定义:

Java中使用关键字new创建数组对象,声明数组的同时分配内存空间,数组定义方式有3种:

方式1 (推荐,更能表明数组类型)

比如:

int[] a = new int[10];

数组名,也即引用a,指向数组元素的首地址。

方式2 (同C语言)

type 变量名[] = new type[数组中元素的个数];

如:

int a[] = new int[10];

方式3 定义时直接初始化

type[] 变量名 = new type[]{逗号分隔的初始化值};

其中 new type[] 可省略,所以又有两种:

int[] a = {1,2,3,4};

int[] a = new int[]{1,2,3,4};

上面 int[] a = new int[]{1,2,3,4} 的第二个中括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 array. length -1( array.length为数组的长度,在上面例子中,a即为array )

2、数组的操作:

①赋值:

下面的语句首先声明了一个数组变量 myList,接着创建了一个包含 10 个 double 类型元素的数组,并且把它的引用赋值给 myList 变量。

public class TestArray{

public static void main(String[] args){

// 数组大小

intsize = 10;

// 定义数组

double[] myList = new double[size];

myList[0] = 5.6;

myList[1] = 4.5;

myList[2] = 3.3;

myList[3] = 13.2;

myList[4] = 4.0;

myList[5] = 34.33;

myList[6] = 34.0;

myList[7] = 45.45;

myList[8] = 99.993;

myList[9] = 11123;

// 计算所有元素的总和

double total = 0;

for(inti = 0; i < size; i++){

total += myList[i];

}

System.out.println(“总和为: ” + total);

}

}

下面的图片描绘了数组 myList。这里 myList 数组里有 10 个 double 元素,它的下标从 0 到 9。

②循环数组(遍历):

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。

创建、初始化和使用 基本循环 操纵数组:

public class TestArray{

public static void main(String[] args){

double[] myList = {1.9, 2.9, 3.4, 3.5};

// 打印所有数组元素

for(inti = 0; i < myList.length; i++){

System.out.println(myList[i] + “”);

}

// 计算所有元素的总和

doubletotal = 0;

for(inti = 0; i < myList.length; i++){

total += myList[i];

}

System.out.println(“Total is ” + total);

// 查找最大元素

doublemax = myList[0];

for(inti = 1; i < myList.length; i++){

if(myList[i] > max){

max = myList[i];

}

System.out.println(“Max is ” + max);

}

}

foreach 循环,能在不使用下标的情况下遍历数组:

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);

}

}

}

③数组排序(介绍几种常用排序方法):

1.冒泡排序 (将相近的两个数字依次比较,将值最大或最小的一次提取,进行排序)

public void bubbleSort() {

int a[]={32,87,3,58,12,70,20,8,62,17};

int n = a.length;

for (int i = 0; i < n – 1; i++) {

for (int j = 0; j < n – 1; j++) {

if (a[j] > a[j + 1]) {

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

for(int c: a){

System.out.println(c);

}

}

2.选择排序 (每一次将第一个数与后面的数一次比较,将最大值的下标保存,然后调换位置,进行排序)

public void selectSort() {

int a[]={32,87,3,58,12,70,20,8,62,17};

int n = a.length;

for (int i = 0; i < n – 1; i++) {

int index = i;

for (int j = i+1; j < n ; j++) {

if (a[index] < a[j]) {

index = j;

}

}

if (index != i) {

int temp = a[i];

a[i] = a[index];

a[index] = temp;

}

}

for(int c: a){

System.out.println(c);

}

}

3.插入排序( 把当前待排序的元素插入到一个已经排好序的列表里面 。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的 最坏运行时间是O(n2) , 所以并不是最优的 排序算法 。特点是简单,不需要额外的存储空间,在元素少的时候工作得好)

public void insertSort() {

int a[]={32,87,3,58,12,70,20,8,62,17};

int n = a.length;

for (int i = 1; i < n; i++) {

//将a[i]插入a[0:i-1]

int t = a[i];

int j;

for (j = i – 1; j >= 0 && t < a[j]; j–) {

a[j + 1] = a[j];

}

a[j + 1] = t;

}

for(int c: a){

System.out.println(c);

}

}

4.还有一种方法就是用Arrays.sort()方法直接排序

public void sort() {

int a[]={32,87,3,58,12,70,20,8,62,17};

Arrays.sort(a);

for(int c: a){

System.out.println(c);

}

}

文章来源:智云一二三科技

文章标题:Java数组以及数组的遍历和排序算法

文章地址:https://www.zhihuclub.com/180537.shtml

关于作者: 智云科技

热门文章

网站地图