标签:翻转 条件 图片 mil fse public ... static sel
1. 数组的概念
同一种类型数据的集合。其实数组就是一个容器。运算的时候有很多数据参与运算,那么首先需要做的是什么.不是如何运算而是如何保存这些数据以便于后期的运算,那么数组就是一种用于存储数据的方式,能存数据的地方我们称之为容器,容器里装的东西就是数组的元素, 数组可以装任意类型的数据,虽然可以装任意类型的数据,但是定义好的数组只能装一种元素, 也就是数组一旦定义,那么里边存储的数据类型也就确定了。
2. 数组的格式
1)声明并给长度(前提时知道数据个数)
int[] a = new int[3];
2)声明但不给长度(不知道数据个数情况下)
int[] a ;
3)边声明边赋值
Int[] a = {1,2,3...};
3. 数组的遍历(for)
public static void main(String[] args) {
int[] x = { 1, 2, 3 };
for (int y = 0; y < x.length; y++) {
System.out.println(x[y]);
// System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;
} // 那么这就是数组的第一个常见操作.遍历
}
4. 数组的内存分析
1)案例分析一:
注意:0x999为内存地址,arr存储的时内存地址,而不是具体的数值
2)案例分析二:
假如有2个数组 a和b
Int[] a = b; //这个实际上是把b的内存地址给a了,而不是把b的值给a了
5. 数组常见操作
1)直接排序
原理:第一轮,比较每个元素之间的大小,把最大的排在第一个。
第二轮:比较除了第一个以外的每个值大小,把最大的放在第二位
...
代码:
public static void selectSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
//为什么y的初始化值是 x+1? 因为每一次比较,都用x角标上的元素和下一个元素进 行比较
for(int y=x+1; y<arr.length; y++){
if(arr[x]>arr[y]){
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
2)冒泡排序
原理:比较相邻两个元素进行比较。如果满足条件就进行位置置换
public static void bubbleSort(int[] arr){
//-x:让每次参与比较的元素减-1:避免角标越界。
for(int x=0; x<arr.length-1; x++){
for(int y=0; y<arr.length-x-1; y++){
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
3)折半查找(二分法)
原理:让一个数跟数组的中间索引数进行比较(数组必须先拍好序),大就查找中间索引右边的值(默认从小到大排序)然后重复上面的步骤,指导找到
例如:
public static int halfSeach(int[] arr,int key){
int min,mid,max;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid]){
min = mid + 1;
}else if(key<arr[mid]){
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
4)数组翻转
5)上面都是自己定义的一些方法,其实因为这些操作都是常用的功能,所以都进行了预定义了
toString() 输出数组
sort() 给指定数组排序
6. 二维数组
1) 语法
int[] a = new int[3][4];
int[] a = {{1,2,3,4,5},{6,7,8,9},{10,11,12,13}};
2)内存分析
标签:翻转 条件 图片 mil fse public ... static sel
原文地址:https://www.cnblogs.com/zjdbk/p/8877269.html