一、数组定义
同一种类型数据的集合,其实数组就是一个容器
数组定义格式:
1.数据类型[] 变量名 = new 数据类型[数组长度]

int[] arr = new int[5];

2.数据类型[] 数组名 = new 数据类型[]{元素,元素,.....};

int[] arr = new int[]{3,5,4,9};
int[] arr = {3,5,8,9};

二、数组遍历

int[] arr = new int[3];
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
获取最值(最大值、最小值)

int[] arr=new int[5];

int temp=arr[0];
for(int i=1;i<arr.length;i++)
{
if(temp<arr[i])
{
temp = arr[i];
}
}
三、数组排序(Arrays.Sort(arr))
常见的排序方式:选择排序和冒泡排序
①、选择排序
最值出现在第一位
代码:

for(int i=0;i<arr.length-1;i++)
{
for(int j=i+1;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
 
②、冒泡排序
最值出现在最后位置
 

代码:

for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-i-1;j++)
{
if(arr[j]<arr[j+1])
{
int temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}

外循环为行数

四、数组查找

折半查找,必须操作有序数组

	public static int halfSearch(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{
if(min>max)
{
return -1;
}
if(arr[mid]<key)
{
min=mid+1;
}else if(arr[mid]>key)
{
max=mid-1;
}
mid=(min+max)/2;
}
}

第二种写法

	public static int halfSearch2(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid;
while(min<=max)
{
mid=(min+max)>>1;
if(arr[mid]<key)
{
min=mid+1;
}else if(arr[mid]>key)
{
max=mid-1;
}else
{
return mid;
}
}
return -1;
}

折半查找实例:在一个有些数组中插入一个数,并保证数组还是有序数组

     public static void main(String[] args)
{
int[] arr=new int[]{2,6,9,10,15,24,29,34,46};
//通过折半查找要插入的元素在数组中的位置
//如果存在这个元素的话就在这个元素所在数组位置插入
//如果不存在这个元素的话就返回最小索引的值
int key =11;
int index=halfSearch(arr,11); int[] arrTemp=new int[arr.length + 1];
for(int i=0;i<arr.length-1;i++)
{
arrTemp[i]=arr[i];
}
for(int i=arrTemp.length-1;i>=index;i--)
{
if(index==i)
arrTemp[i]=key;
else
arrTemp[i]=arrTemp[i-1];
}
for(int i=0;i<arrTemp.length-1;i++)
{
System.out.println(arrTemp[i]);
} }
public static int halfSearch(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid;
while(min<=max)
{
mid=(min+max)>>1;
if(arr[mid]<key)
{
min=mid+1;
}else if(arr[mid]>key)
{
max=mid-1;
}else
{
return mid;
}
}
return min;
}

JAVA学习之数组的更多相关文章

  1. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  2. Java学习之数组的简单用法

    •概念 其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作. 数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配: 而数组的定义语法有两种 ...

  3. java学习之数组(二)

    在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式.那么这里我们来说一下,数组的另一种定义方式. 在上一篇当中我们规定是这个样子定义数组的, class ArrDemo { public ...

  4. java学习之数组(一)【内存】

    在java语言当中,为了更方便多个数据的管理,这里提供数组. 比如说,现在我们有一组数据,7,8,9,9,为了保存这四个数据,我们分别要定义变量来保存,少了还好说.但是假如,有100多个数据呢,我们一 ...

  5. java学习笔记 --- 数组

    一.Java的内存分配   A:栈内存: 存储局部变量,只要是在方法中定义的变量都是局部变量.一旦变量的生命周期结束该变量就被释放.   B:堆内存: 存储所有new出来的,及实体(对象),每一个实体 ...

  6. Java学习:数组工具类Arrays

    数组工具类Arrays java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作. public static String toString(数组) ...

  7. Java学习:数组的使用和注意事项

    数组 数组的概念:是一种容器,可以同时存放多个数据值 数组的特点: 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可以改变 数组的初始化:在内存当中创建一个数组, ...

  8. Java学习day6数组

    ---恢复内容开始--- Java数组 Java 语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number ...

  9. java学习之—数组的曾删改查

    /** * 数组的曾删改查 * Create by Administrator * 2018/6/8 0008 * 上午 9:54 **/ public class HighArray { priva ...

  10. Java学习之==>数组【array】

    一.定义数组 /** * 一维数组定义 * * 为数组插入元素 */ public void case1() { // 声明 int[] arr1; // 声明+初始化 int[] arr2 = ne ...

随机推荐

  1. MySQL date_sub 和 date_add 函数

    DATE_SUB: 定义和用法 DATE_SUB() 函数从日期减去指定的时间间隔. 语法 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.exp ...

  2. Jplayer用法

    引用js:jquery.jplayer.min.js; body里面必须有这个: <div id="jplayer"></div> jplayer停止方法 ...

  3. JS实现的ajax

    function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch (e) { try { return new ...

  4. Could not open lock file/var/lib/dpkg/lock的解决

    Could not open lock file/var/lib/dpkg/lock的解决 在ubuntu系统中利用apt-get install something的时候,有时候会出现无法获得锁的权 ...

  5. JavaScript中 函数的创建和调用

    基础概念:定义函数的方式   一般定义函数有两种方式:    1:函数的声明    2:函数表达式 参考资料:https://blog.csdn.net/xixiruyiruyi/article/de ...

  6. Spring Cloud Alibaba

    Spring Cloud Alibaba Dubbo Dubbo Dubbo 系列 [Dubbo 系列总结] [Dubbo 系列(01)最简使用姿态] [Dubbo 系列(02)整体架构] Dubbo ...

  7. Eureka 系列(04)客户端源码分析

    Eureka 系列(04)客户端源码分析 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(01)最简使用姿态 中对 Eureka 的简单用法做 ...

  8. Mysql 主从同步(转载)

    第一步: 在master上创建用于同步的用户 GRANT FILE,REPLICATION SLAVE,REPLICATION CLIENT,SUPER ON *.* TObackup@'192.16 ...

  9. ZanUI-WeApp -- 一个颜值高、好用、易扩展的微信小程序 UI 库

    ZanUI-WeApp -- 一个颜值高.好用.易扩展的微信小程序 UI 库:https://cnodejs.org/topic/589d625a5c8036f7019e7a4a 微信小程序之官方UI ...

  10. Python中xlrd、xlwt、win32com模块对xls文件的读写操作

    # -*- coding: utf-8 -*- #xlrd和xlwt只支持xls文件读写,openpyxl只支持xlsx文件的读写操作 import xlrd import xlwt import w ...