数组概念
同一种类型数据的集合。其实数组就是一个容器。
可以自动给数组中的元素从0开始编号,方便操作这些元素。
- 格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5]; - 格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7}; - 格式3:
int[] arr = {3,5,1,7};
格式3必须声明的同时初始化
格式1创建数组的时候没有显示给数组赋值,会有默认值
数组的访问:通过下标访问
语法:变量名[下标] length获取元素的个数
下标的范围:0——变量名.length-1
数组的遍历:for循环
多维数组的遍历:for循环嵌套
常见的数组操作
1.数组复制
int[] arrA = {1,2,3,4,5,6};
int[] arrB = new int[arrA.length];
for(int i=0; i<arrA.length; i++){
arrB[i] = arrA[i];
}
for(int i=0; i<arrB.length; i++){
System.out.println(arrB[i]);
}
2.数组的查找
Scanner in = new Scanner(System.in);
System.out.println("请输入你要找的人");
String name = in.next();
String[] arr = {"张","王"};
Boolean flag = false;
for(int i=0; i<arr.length; i++){
if(name.equals(arr[i])){
flag = true;
}
}
if(flag=true){
System.out.println("找到");
}
3.数组的插入
Scanner in = new Scanner(System.in);
int[] arr = { 5665, 55, 66, 99, 22, 14, 54, 78 };
System.out.println("请输入你要插入的数");
int num = in.nextInt();
arr[arr.length - 1] = num;
for (int i = arr.length - 1; i > 0; i--) {
if (arr[i] < arr[i - 1]) {
int temp = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = temp;
} else {
break;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
4.数组最值
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
public static int getMax_2(int[] arr) {
int maxIndex = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i ;
}
}
return arr[maxIndex];
}
5.数组的排序
5.1选择排序
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-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;
}
}
}
}
5.2冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-1-x; y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
6.折半查找(二分查找)
public static int halfSearch(int[] arr, int key) {
int max, min, mid;
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 (max < min)
return -1;
mid = (max + min) / 2;
}
return mid;
}
public static int halfSearch_2(int[] arr, int key) {
int max, min, mid;
min = 0;
max = arr.length - 1;
while (min <= max) {
mid = (max + min) >> 1;
if (key > arr[mid])
min = mid + 1;
else if (key < arr[mid])
max = mid - 1;
else
return mid;
}
return -min - 1;
}
7.数组內建方法
Arrays.binarySearch(arr,3);//二分查找指定元素
Arrays.copyOfRange(arr,1,7);//拷贝元素
Arrays.full(arr,8);//填充元素
Arrays.toStirng(arr);//数组转换成字符串
Arrays.sort();//普通排序
8.进制转换
//十进制-->十六进制。
public static void toHex(int num)
{
trans(num,15,4);
}
//十进制-->二进制。
public static void toBinary(int num)
{
trans(num,1,1);
}
// 十进制-->八进制。
public static void toOctal(int num)
{
trans(num,7,3);
}
public static void trans(int num,int base,int offset)
{
if(num==0)
{
System.out.println("0");
return ;
}
//定义一个对应关系表。
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr = new char[32];
int pos = arr.length;
while(num!=0)
{
int temp = num & base;
arr[--pos] = chs[temp];
num = num >>> offset;
}
for(int x=pos ;x<arr.length; x++)
{
System.out.print(arr[x]);
}
System.out.println();
}
网友评论