骗子关于数组的一页笔记,有点乱哈哈
[size=10.5000pt]一、关于数组的定义和一些列操作 类似 int[] arr = new int[2]; 或者 int arr[] = new int [2]; 或者 int[] arr = new int[]{1,2,3,4}; 或者 int[] arr= {1,2,3,4}; 几种方式都是可以用来定义一个数组,然后数组名前面的修饰符int也可以切换成其它诸如byte这些。 1.数组的遍历 for(int x=0;x<数组长度;x++) { 数组[x]; } 数组有一个length属性可以用来获取数组长度 2.取最值 这里用取最大值举例子 int a=数组[0] for(int x=1;x<数组长度;x++) { if(a>数组[x]) a = 数组[x]; } 最后得出的a的值,一定是数组中最大值 此处注意,for内x的初始值是1而不是0.因为a的初始值为数组[0] 2.排序,此处列举两种,冒泡法和比较法 这两种方法其实都差不多, 冒泡法 for(int x=0;x<数组长度-1;x++) { for(int y=0;y<数组长度-x-1;y++) { if(数组[y]>数组[y+1]); 两值互换; } } 比较法 for(int x=0;x<数组长度-1;x++) { for(int y=x;y<数组长度;y++) { if(数组[x]>数组[y]); 两值互换; } } 可以看出这两种方法在语言上看上去是差不多的,然后执行过程中的差别冒泡挨个将最值排到顶端,而比较法是从头开始每个元素都与之后的所有元素做比较,所以冒泡法效率更高一点。 3.数组元素的查找 有脚标的情况下可以直接通过,数组[x]的方法获取元素 而有元素的情况下只需要 for(int x=0;x<数组长度;x++) { if(数组[x]==元素) return x; } 就可以得到该元素脚标的值,在编写此类程序的时候,一般有一个惯例,就是如果所提供的元素在函数中不存在,则我们给出返回值-1,因为负数在数组脚标中是不可能出现的,所以用-1来表示查无此元素。 此外若可以确定一个数组中数据是顺序排序的,则此时我们可以使用中间值法来进行更有效率的查找 int x=数组长度-1; int y=0; int mu=(x+y)/2; for(;mu<x&mu>y;) { if(元素>数组[mu]) { y=mu+1; mu=(x+y)/2; } else if (元素<数组[mu]) { x=mu-1; mu=(x+y)/2; } else return mu; } 元素在数组中不存在;
|