javase(4)_数组
一、数组概述
数组可以看成是多个相同类型数据组合,对这些数据的统一管理.
数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量.
数组中的元素可以是任意类型,包括基本类型和引用类型,有默认初始值(按照成员变量的规则).
二、一维数组定义
实例:
int[] a= new int[]; //对
int[] b= new int[]{,,}; //对
int[] c={,,}; //对
int[] d=new int[]{,}; //错 int[] a=new int[];
int b=a[]; //对,有默认值
int b=a[]; //运行期错误,编译无问题。 int[]a;
int k = a[]; //编译报错,未初始化,只是开辟了栈内存 Person[] p=new Person[]; p[].age; //运行期空指针异常
三、数组长度
java中每个数组都有一个public final int 的length属性,表示数组的长度,一旦确定就不能改变大小.
四、二维数组定义
二维数组可以看成数组的数组.
实例
int a[][]={{,},{,},{,}} //对
int a[][]=new a[][] //二维变长数组
a[]=new int[];
a[]=new int[];
a[]={,}; //报错,此处和一维数组有区别
int a[][]=new a[][]; //错
五、数组实例
/*取最值*/
int[] array = new int[]{,,,,,};
int max=;
for(int i=;i<array.length;i++){
if(array[max]<array[i]){
max=i;
}
}
System.out.println(array[max]); /*选择排序*/
for(int i=;i<array.length-;i++){
int min=i;
for(int j=i+;j<array.length;j++){
if(array[min]>array[j]){
min=j;
}
}
if(min != i){
array[i] = array[i]^array[min];
array[min] = array[i]^array[min];
array[i] = array[i]^array[min];
}
} /*冒泡排序法*/
for(int i=;i<array.length-;i++){
for(int j=;j<array.length-i-;j++){
if(array[j]>array[j+]){
array[j]=array[j]^array[j+];
array[j+]=array[j]^array[j+];
array[j]=array[j]^array[j+];
}
}
} /*反转数组*/
public static void reverseArray(int[] arr){
for(int start=,end=arr.length-; start<end ; start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
} /*二分查找法*/
public static int getArrayIndex(int target){
int num=;
int left=;
int last=array.length-;
int middle = (left+last)>>;
while(array[middle]!=target){
if(array[middle]>target){
last=middle-;
}else{
left=middle+;
}
middle=(left+last)>>;
num++;
}
return middle;
}
ps:面试题,插入一个数,保持数组排序,插入的位置?
二分查找条件改为:while(array[left]<=array[last]),插入的位置:left+1
六、实际使用数组时,使用java.util.Arrays类和apache.long.ArrayUtils类中提供的数组方法。
ps(常用的数组方法): http://www.iteye.com/news/28296
javase(4)_数组的更多相关文章
- 选择排序_C语言_数组
选择排序_C语言_数组 #include <stdio.h> void select_sort(int *); int main(int argc, const char * argv[] ...
- 插入排序_C语言_数组
插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...
- 快速排序_C语言_数组
快速排序_C语言_数组 #include <stdio.h> void quickSort(int *, int, int); int searchPos(int *, int, int) ...
- 冒泡排序_C语言_数组
冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ...
- Net基础篇_学习笔记_第九天_数组_冒泡排序(面试常见题目)
冒泡排序: 将一个数组中的元素按照从大到小或从小到大的顺序进行排列. for循环的嵌套---专项课题 int[] nums={9,8,7,6,5,4,3,2,1,0}; 0 1 2 3 4 5 6 7 ...
- Net基础篇_学习笔记_第九天_数组_三个练习
练习一: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- Net基础篇_学习笔记_第九天_数组
结构:一次性存储不同类型的变量: 数组:一次性存储相同类型的变量: 数组的语法: 数组类型[ ] 数组名=new 数组类型[数组长度]: int[ ] nums=new int[10]; 数组初值都是 ...
- C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》
说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型 ...
- 大数计算_BigNum优化_加减乘除乘方取余_带注释_数组
#include <iostream> #include <algorithm> #include <cstring> #include <cstdlib&g ...
随机推荐
- [Xcode 实际操作]八、网络与多线程-(16)使用网址会话对象URLSession下载图片并显示下载进度
目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession显示下载图片的进度. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的代理模式 ...
- [Swift]堆栈Stack:检索最小元素时间复杂度O(1)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- js框架:jQuery
· jQuery是一个轻量级的“写的少,做的多”的JavaScript函数库(jQuery版本2以上不支持IE6,7,8) · jQuery 的功能概括: 1.html 的元素选取 2.html的元素 ...
- C 语言实例 - 输出当前文件执行代码
C 语言实例 - 输出当前文件执行代码 输出当前文件执行代码,__FILE__ 为当前执行的文件常量. 实例 #include <stdio.h> int main() { FILE *f ...
- random 库
random 是使用随机数的python 标准库 ——为随机数:采用梅森旋转算法生成的(伪)随机序列中的元素 —— import random 基本随机数函数:seed(),random() 扩展随机 ...
- Jquery | 基础 | .hover()
https://api.jquery.com/hover/#hover-handlerIn-handlerOut http://jquery.cuishifeng.cn/hover.html
- python异常之ModuleNotFoundError: No module named 'test01inner02'
当我们使用sys.path.append(args) 指令向程序中导入模块时其实本次append操作只是在内存中完成的,如果要永久性的添加需要修改环境变量. 我们发现当我们使用print(sys.pa ...
- zabbix图表中文乱码
如果语言改成中文,在图表中的中文会乱码,这是因为zabbix默认的字体文件比较烂 方法就是把字体文件替换,找到zabbix前端文件地址,换一个字体文件就好 [root@webmaster fonts] ...
- Redis安装(centOS7)
1.安装gcc环境 sudo yum install gcc-c++ 2.安装wget sudo yum install wget 3.下载Redis源码包 wget http://download. ...
- 栈 && 教授的测试
卡特兰数:https://blog.csdn.net/wu_tongtong/article/details/78161211 https://www.luogu.org/problemnew/sho ...