博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一维数组
阅读量:4340 次
发布时间:2019-06-07

本文共 4954 字,大约阅读时间需要 16 分钟。

        一维数组
一、数组的作用和类型
1.作用
  A.存储 相同数据类型 的一组数据
  B.对同类型数据进行集中管理,比如储存和遍历
2.数组类型
  A.数组的类型就是数据中存储的数据的类型
  B.数据本身是个对象(对象属于引用数据类型)
注意:
  A.数组中的所有元素属于相同的数据类型
  B.数组中所有元素在内存中连续存储
特点:数组本身也是一种引用类型
  A.数组名只是引用,指向堆中创建的数组对象,该对象保存一组其它引用或直接值

 

 

二、声明、创建数组

1.数组的声明
  A.告诉系统数据类型是什么
  B.语法: 数据类型[] 数组名;
2.数组的创建
  A.为数组分配内存空间
    a.new操作符的使用
3.声明并创建数组
  数据类型[] 数组名 = new 数据类型[大小];
  列:int[] arry = new int[3];
4.数组的特点
  A.数组有一个字段length,表示此数组对象可以存储多个元素即数组长度;length不是实际保存的元素个数
  B.“[]”语法是访问数组对象成员的唯一方式
  C.对象数组保存的是引用,基本类型数组直接保存基本类型的值
  D.新生成的数组对象,其中所有的引用自动化初始化为null;基本类型数组成员有各自默认值(数值型自动初始化为 0,字符型为(char)0,布尔型为false,float/double型为0.0)

 

三、初始化数组

1.数组的初始化
  A.为数组中的成员一一赋值
2.数组赋值的两种方式
  A.边声明边赋值(静态初始化)
    int[] score = {66,77,88};
    int[] score = new int[]{66,77,88};
  B.动态地获取(从键盘录入)信息并赋值
    int[] score = new int[3];
    Scanner input = new Scanner(System.in);
    for(int i=0 ;i<3;i++){
    score[i] = input.nextInt();
    }

四、常用数组排序算法

1.冒泡排序法

  工作原理:比较相邻的元素。如果第一个比第二个大,就交换它们两个。对每一对响铃元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素应该会是最大的数。针对除了最后一个元素以外所有的原色重发以上的步骤。直到没有任何一对数字需要比较。

总结:N个数,比较N-1轮,每轮比较N-1-i次。  

代码示例:

1 package com.sanlianxueuan; 2  3 public class Demo7 { 4  5     /** 6      * 冒泡排序 7      */ 8     public static void main(String[] args) { 9         int [] array = {1,5,3,2,6,7,9,13,54,20};10         //N个数比较的论数N-1;11         for (int i=0;i
array[j+1]){16 //两个数做交换,通过设置临时变量17 int temp = array[j];18 array[j] = array[j+1];19 array[j+1] =temp;20 }21 }22 }23 //把排好序的数组输出24 for(int i=0;i

 

2.选择排序法:

  工作原理:首先在为排序序列中找到最小元素,存放到排序序列的其实位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素觉排序完毕。

代码示例:

1 package com.sanlianxueuan; 2  3 public class Demo8 { 4  5     /** 6      * 选择排序 7      */ 8     public static void main(String[] args) { 9         int [] array = {1,5,3,2,6,7,9,15,54,82};10         int min = 0;  //保存最小元素值的下标11         //N个数进行N-1轮的比较12         for(int i=0;i
array[j]){17 min = j;18 }19 }20 //如果第i个最小的数位置不在i上,则进行交换21 if(i != min){22 int temp = array[i];23 array[i] = array[min];24 array[min] = temp;25 } 26 }27 for(int i=0;i

 

总结:N个数,比较N-1轮

3.插入排序法:

  工作原理:它是通过构建有序序列,对于未排序数据,在已排序列中从后向前扫描,找到相应位置并插入。从后向前扫描过程中,需要反复吧已排序元素逐步向后挪位,为最新元素提供插入空间。

 代码示例:

1 package com.sanlianxueuan; 2  3 public class Demo9 { 4  5     /** 6      * 插入排序 7      */ 8     public static void main(String[] args) { 9         int [] array = {20,25,15,42,36,16,12};10         for(int i=1;i
0&&temp

 

 

五、常用数组查找算法

1.线性查找法:
  工作原理:它又称之为顺序查找。在一列给定的值中进行搜索,从一端开始注意查询每个元素,知道返回所需元素的过程。
  例:A.查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1;
    B.求数组中的最大值,最小值

代码示例:

1 package com.sanlianxueuan; 2  3 import java.util.Scanner; 4  5 public class Demo4 { 6  7     /** 8      * 查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1; 9      */10     public static void main(String[] args) {11         int[] array = {10,20,80,60,50,90,70,30};12         Scanner input = new Scanner(System.in);13         System.out.println("请输入一个数:");14         int number = input.nextInt();15         int index =-1;   //保存找到的数所在数组中的下标,找不到等于-1;16         for(int i=0;i

 

2.二分法查找:-----针对的是有序的数据

  工作原理:它又称之为折半查找法。讲数组中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置将数组分成前、后两个子数组,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子数组,否则进一步查找后一子数组。重复以上过程知道找到或者找不到为止。

代码示例:

1 package com.sanlianxueuan; 2  3 import java.util.Scanner; 4  5 public class Demo6 { 6  7     /** 8      * 二分法查找 9      */10     public static void main(String[] args) {11         int [] array ={1,2,3,4,5,6,7,8,9,18,49,87,90};12         System.out.println("请输入要查找的数:");13         Scanner input = new Scanner(System.in);14         int number = input.nextInt();15         int index = -1;   //保存找到数所在数组中的下标,找不到等于-116         int start = 0;   //起始下标17         int end = array.length-1;  //终止下标18         int middle;19         while(start
array[middle]){29 start = middle+1;30 31 }32 //保留左边的数,去掉右边的数33 if(number < array[middle]){34 end = middle - 1;35 36 }37 }38 if(index != -1){39 System.out.println("要找的数在"+index+"位");40 }41 42 if(index == -1){43 System.out.println("not find");44 }45 46 }47 48 }

 

六、Arrays类使用

java的jdk中提供了一个Arrays工具类,此类专门为程序员操作数组提供了很多专有的方法,通过方法的调用可以对数组进行复制、排序、比较、查找元素等功能。

 代码示例:

1 package com.sanlianxueuan; 2  3 import java.util.Arrays; 4  5 public class Demo10 { 6  7     /** 8      * Array类的引用 9      */10     public static void main(String[] args) {11         int [] arraySrc1 = {1,3,4,5,6,2};12         //拷贝数组13         //参数说明:第一个是要拷贝的数组名,第二个是数组的长度14         int [] arrayDes1 = Arrays.copyOf(arraySrc1, 10);15         for(int i=0; i

 

转载于:https://www.cnblogs.com/lixiaokang-blog/p/7276012.html

你可能感兴趣的文章
python-9-IO编程
查看>>
【GoLang】转载:我为什么放弃Go语言,哈哈
查看>>
【MySQL】MySQL 如何实现 唯一随机数ID
查看>>
【Redis】Redis分布式集群几点说道
查看>>
HDU2819(KB10-E 二分图最大匹配)
查看>>
mysql主从复制、redis基础、持久化和主从复制
查看>>
文档工具GitBook使用
查看>>
两个链表的第一个公共节点
查看>>
知道这20个正则表达式,能让你少写1,000行代码
查看>>
MariaDB 主从同步与热备(14)
查看>>
推荐的 CSS 书写顺序
查看>>
NIO:与 Buffer 一起使用 Channel
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>
MFC接收ShellExecute多个参数
查看>>
volatile和synchronized的区别
查看>>
RocketMQ介绍与云服务器安装
查看>>
并发量计算研究
查看>>
sqlserver安装相关问题
查看>>
iOS学习系列 - 利用ASIHTTPRequest实现异步队列
查看>>
Oracle11g创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题...
查看>>