数组深入学习

来源:互联网 发布:淘宝上的学历是真的吗 编辑:程序博客网 时间:2024/05/16 17:02


 

数组学习笔记(包括排序和查找算法)

数组(Array):相同类型的数据集合叫数组

 

如何定义数组Type[] 变量名称=new Type[数组长度]     Java推荐使用这种方式

 

数组的索引是从0开始的,数组有一个length属性表示数组长度。

 

int[] a=new int[10],其中a是一个引用,它本身指向了生成数组对象的首地址,对于引用数据类型的数组,它存放的是对象的引用。

 

二维数组:type[][] a=new Type[2][3]   第一个代表行,第二个代表列

二维数组实际开发中使用比较少

Arrays: 数组工具类  里面比较常用的方法就是排序、搜索、copy、以及asList返回、比较数组是否相等(equals)

Object 这三个方法目前可以深入了解了解

*equals()

*hashCode()

*toString()

通常当某个类要覆盖equals()方法的时候,最好把hashCode()方法也覆盖了,其实是为了提升性能。

 

数组排序:

1.冒泡排序:

/**

 * 冒泡排序法:

 * 所谓冒泡排序第一个元素和第二个元素,第二个元素和第三个元素比较,较大的元素往后移位

 * 第一轮排序:得到最大的元素

 * 第二轮排序:得到第二大的元素

 * 。。。

 * n-1轮排序:结束排序

 * 二层循环

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

 for(int i=1;i<a.length;i++){

for(int j=0;j<a.length-i;j++){

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

int temp=a[j];

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

a[j+1]=temp;

}

}

}

2.交换排序:

/**

 * 交换排序:

 * 所谓交换排序:

 * 第一轮排序:第一个元素和之后的每一个元素比较,得到最小元素

 * 第二轮排序:第二个元素和之后的每一个元素比较,得到第二个最小元素

 * 。。。

 * n-1轮排序:排序完成

 * 二层循环

我的代码还有点问题:

 

二分查找法:

/**

 * 二分查找法:

 * 使和数组的中间元素比较,如果大于中间元素,则去掉中间元素和中间元素之前的元素,在剩下的元素中继续上一步骤

 * 不过使用二分查找算法有一个前提条件就是,需要查找的数组必须是有序的的,不然没法查找

 * 这是一个while循环

public int search(int[] array, int x) {

int min = 0;

int max = array.length - 1;

int middle = 0;

while (max >= min) {

middle = (min + max) / 2;

if (x == array[middle]) {

return middle;

}

if (x > array[middle]) {

min = middle + 1;

}

if (x < array[middle]) {

max = middle - 1;

}

}

return -1;

}

 

 

0 0
原创粉丝点击