一、数组定义
同一种类型数据的集合,其实数组就是一个容器
数组定义格式:
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. php开发面试题---lavarel和tp的区别是什么(呕心整理)

    php开发面试题---lavarel和tp的区别是什么(呕心整理) 一.总结 一句话总结: 反思的回顾非常有用,因为决定了我的方向和技巧 以战养己,这是非常非常好的方式 主要从大小.功能.安全性.操作 ...

  2. leetcode上的一些动态规划

    70-爬楼梯 思路:该问题可以理解为经典的“斐波那契数列”问题,但这里需要用动规实现,递归会超时 class Solution { public: int climbStairs(int n) { v ...

  3. (6)C++ 函数

    一.基本知识  1.为什么需要原型? 原型描述了函数到编译器的接口,将函数返回值类型以及参数类型.参数数量告诉编译器. 首先原型告诉编译器方法存在某些参数,如果没有原型会让编译器捕获这种错误. 其次函 ...

  4. PHP 代码编写注意事项总结归纳

    1- 编写模块化代码 良好的PHP代码应该是模块化代码.PHP的面向对象的编程功能是一些特别强大的工 具,可以把你的应用程序分解成函数或方法.你应该尽可能多的从你的应用程序的服务器端分开前端的HTML ...

  5. JavaBean详解

    JavaBean详解 我们对JavaBean的理解可以从java和bean两个方面来理解,对于Java我们都很清楚,而bean在计算机中的含义为可重用组件.(ps:对Spring中的bean是不是有了 ...

  6. (1.2)学习笔记之mysql体系结构(数据库文件)

    InnoDB存储引擎体系结构图 1.InnoDB数据库的结构 (1)redo log:这里的redo log不是数据的redo log,InnoDB本也是一个数据库,身具有的redo log,所以这里 ...

  7. 发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下

    发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下:https://segmentfault.com/a/1190000011377961 vantUI框架在vue项目中的应用 ...

  8. python-装饰器初识,闭包

    函数名的运⽤, 第⼀类对象 ⼀. 函数名的运⽤. 函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 1. 函数名的内存地址 def func(): print("呵呵 ...

  9. Android apiDemo 学习——对话框AlertDialogSamples

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/31423049 注意:该代码仅仅适用于当次简单调用对 ...

  10. Python之OS(系统操作)模块常用函数

    mkdir(path[, mode=0777]) makedirs(name,mode=511) rmdir(path) removedirs(path) listdir(path) getcwd() ...