java中的数组

------- android培训java培训、期待与您交流! ----------

一、数组概述

1、概念:

  数组就是存储数据的一种方式(一种容器)同一种类型数据的集合;

2、数组的好处:

          可以自动给数组的元素从0开始编号,便于操作

3、定义数组的两种格式

  1)元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int [5];

 

  2)元素类型[] 数组名 = new 元素类型[] {元素,元素,.....};

示例:int[] arr = new int[]{3,5,1,7};

        Int[] arr = {3,5,1,7};

二、数组的内存结构

1、

2、 

 

三、数组的操作

1、数组操作常见问题

 

2、数组的常见操作

 1)获取数组的最值(最大值,最小值)

示例:/*

给定一个数组{5,1,6,4,2,8,9}

1,获取数组中的最大值,以及最小值。

*/

 

class ArrayTest 

{

/*

获取数组中的最大值。

思路:

1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。

通过一个变量进行临储。

2,让数组中的每一个元素都和这个变量中的值进行比较。

如果大于了变量中的值,就用该该变量记录较大值。

3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。

步骤:

1,定义变量。初始化为数组中任意一个元素即可。

2,通过循环语句对数组进行遍历。

3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;

需要定义一个功能来完成。以便提高复用性。

1,明确结果,数组中的最大元素 int。、

2,未知内容:一个数组。int[]

*/

public static int getMax(int[] arr)

{

int max = arr[0];

for(int x=1; x<arr.length; x++)

{

if(arr[x]>max)

max = arr[x];

}

return max;

}

/*

获取最大值的另一种方式。

可不可以将临时变量初始化为0呢?可以。这种方式,其实是在初始化为数组中任意一个角标。

*/

public static int getMax_2(int[] arr)

{

int max = 0;

for(int x=1; x<arr.length; x++)

{

if(arr[x]>arr[max])

max = x;

}

return arr[max];

}

/*

获取最小值。

*/

public static int getMin(int[] arr)

{

int min = 0;

for(int x=1; x<arr.length; x++)

{

if(arr[x]<arr[min])

min = x;

}

return arr[min];

}

}

2)数组的排序

主要介绍两种:

选择排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中25的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。

排序实例

初始关键字 [49 38 65 97 76 13 27 49]

第一趟排序后 13 [38 65 97 76 49 27 49]

第二趟排序后 13 27 [65 97 76 49 38 49]

第三趟排序后 13 27 38 [97 76 49 65 49]

第四趟排序后 13 27 38 49 [76 97 65 49 ]

第五趟排序后 13 27 38 49 49 [97 65 76]

第六趟排序后 13 27 38 49 49 65 [97 76]

第七趟排序后 13 27 38 49 49 65 76 [97]

最后排序结果 13 27 38 49 49 65 76 97

图示:

 

程序实现:

 

 

冒泡排序

冒泡排序算法的运作如下:(从后往前)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

图示:


程序实现:

 

 

 

 

 

3)数组折半查找(二分法)

第一种折半:

 

第二种折半:

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值