您的位置:首页 > 编程语言 > Java开发

java0401-0407 数组常见问题

2015-07-31 16:47 337 查看
一、0401
1.引用不存在的数组下标时,会出现outofbounds(越界错误。
2.如果取消数组的指向,那么会无法引用到数组元素,而且整个数组将丢失。
二、0402-数组的遍历

数组遍历常和for循环共同使用。数组类有一个叫做length的成员变量。

int[] arr = {1,6,5,7,4,8};

for(int x = 0; x < arr.length; x++){
S.O.P(arr[x]);
}

三、数组作为参数

public static vodi printA(int [] arr){
for(int x= 0; x< arr.length; x++)
{
S.O.P(arr[x]);
}
}

TIP:如果直接输出arr,打印出来的是内存地址。 [I@de6ced
中括号:数组 I:整形 @右边即为内存地址。这个地址由哈希算法算出。

四、一些常见算法
1.取最值
思路:定义第一个为大,有比之大者即替换。最小值类似。
package com.itheima;

//7、 编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数。
import java.io.*;//导入io,util包以支持从键盘的输入
import java.util.*;

public class Test7 {
public static void main(String Args[]){
Scanner in = new Scanner(new
BufferedInputStream(System.in));//声明scanner
int tmp[] = new int[5];
int big,small;
for(int i = 0; i < tmp.length; i++){
tmp[i] = in.nextInt();
}//获取输入
in.close();
big = tmp[0];
small = tmp[0];
for(int i = 0; i < tmp.length; i++){
if(big < tmp[i])
big = tmp[i];
if(small > tmp[i])
small = tmp[i];
}//进行比较
System.out.print("small:"+small+" "+"big:"+big);//输出
}
}

2.选择排序
思路:
从第一个开始,拿第一个跟后面的比,一旦遇到比第一个小的则互换位置。
public static void selectSort(int[] arr){
for (int x = 0; 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;
}
}
}
}
3.冒泡排序

思路:相邻元素比较,符合条件则进行换位。每次出一个当前排列中的一个最值(到底是最大值还是最小值取决于比较方式)到队列尾端。参与比较的元素随着循环次数增多而逐渐减少。

public static void bubbleSort(int[] arr){
for(int x = 0; y < arr.length - 2; x ++){
for(int y = 0; y < arr.length - x - 1; y ++){
if(arr[y] > arr[y+1]){
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y +1] = temp;
}
}
}
}
在栈内存中进行运算,效率要高,
四、折半查找
任务目的:在一个数组中查找key值。
方法一:直接查找。缺点:效率太低。

方法二:折半查找。方法:假设有n个数字(已排序)。比较查找数据与最大数据之间的关系,如果最大值比查找值大,就将最小值设置为原查找范围的一半。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: