黑马程序员——数组
来源:互联网 发布:unity3d vr抗锯齿 编辑:程序博客网 时间:2024/06/05 18:43
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
概念:
数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中。
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素
格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组。
2. int[] arr=new []{5,6,8,3,4}
int[] arr={5,6,8,3,4}
数组中常见问题:
1、数组角标越界 //ArrayIndexOutofBoundsException
2、空指针异常 //NUllPointerException 当引用没有任何指向,值为空的情况,该引用还在用于操作实体。
数组的操作:
1.获取数组中的数据,通常会用到遍历(for循环),arr.length代表数组的长度
代码: int[] arr=new int[5]; for(int x=0;x<arr.length;x++) { arr[x]; }
2.打印数组中的元素,元素间用逗号隔开。 int[] arr=new int[5]; for(int x=0;x<arr.length;x++) { if(x!=arr.length-1) System.out.print( arr[x]+","); else System.out.print( arr[x]); }
3.获取最值 //定义一个方法,返回最大值角标 public static int getmax(int[] arr){ int max=0; //定义一个变量初始化数组的0角标值for(int x=0; x<arr.length;x++){//循环遍历数组if(arr[max]<arr[x]){//如果临时元素小于遍历到的元素max=x;//将遍历到的值的角标付给临时变量角标}}return max;//返回最大值角标}
4.数组排序-选择排序:内循环结束一次,最值出现在头角标位置上,第一个依次和后面的几个相比较
public static void xuanze(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[y];arr[y]=arr[x];arr[x]=temp;}}}
5.数组排序-冒泡排序:相邻的两个元素进行比较,第一圈,最值出现在最后。 public static void maopao(int[] arr){ for(int x=0; x<arr.length-1;x++){//控制比较的圈数for(int y=0;y<arr.length-x-1;y++)//控制每圈比较的次数 -1是避免角标越界,-x是让每一次比较的元素减少{if(arr[y]>arr[y+1]){int temp=arr[y+1];arr[y+1]=arr[y];arr[y]=temp;}}}
6.数组置换 public static void maopao(int[] arr,int x, int y){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; }
7.数组的一般查找:获取key第一次出现在数组中的位置,如果返回-1,则不存在 public static int select(int[] arr,int key){for(int x=0; x<arr.length;x++){if(arr[x]==key){return x;}}return -1;}
8.数组的折半查找:可以提高查找效率,但是必须是有序数组
第一种方式:
先找到头角标 和尾角标
min =0 //头角标
max=arr.length-1;//尾角标
mid =(min+max)/2;//中间角标
在要找得的值和中间角标不相等的情况下,循环查找。
如果要找的值比中间角标值大的话,头角标就是中间角标+1;
如果要找的值比中间角标小的话,尾角标就是中间角标-1;
中间角标重新赋值 mid =(min+max)/2;//中间角标
查找之后,如果头角标大于了尾角标的话 ,数组中就没有这个值,
第二种方式:
如果头角标和尾角标之间有距离,也就是说头角标和尾角标小于等于尾角标的时候,就进行折半。否则不存在 返回 -1
mid =(min+max)/2;//中间角标
之后呢 如果要找的值比中间角标值大的话,头角标就是中间角标+1;
如果要找的值比中间角标小的话,尾角标就是中间角标-1;
如果相等的话 就返回中间角标值。找到了
面试题:在有序的数组中,插入一个值,插入之后还保证数组是有序的。获取该元素在数组中的位置。
返回的就是最小角标的值就是min的位置 。
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
- 黑马程序员—数组
- 黑马程序员—数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 黑马程序员——数组
- 一个关于Perceptron 的C++程序part1
- java小游戏代码
- 算法8-11:最短路径算法之负权
- 【图】网络流ISAP
- MapReduce 与 Cloud Dataflow, Caffeine, Dremel,Pregel 之间的关系
- 黑马程序员——数组
- 网络---socket耗尽问题
- 8088 汇编速查手册
- asp.net js实现dropdownlist二级联动(动态)
- 网络请求
- 头条新闻
- 算法9-1:最大流和最小切割问题
- Yarn的ApplicationMaster管理
- 开源中国maven库