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.取最值
思路:定义第一个为大,有比之大者即替换。最小值类似。
//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个数字(已排序)。比较查找数据与最大数据之间的关系,如果最大值比查找值大,就将最小值设置为原查找范围的一半。
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个数字(已排序)。比较查找数据与最大数据之间的关系,如果最大值比查找值大,就将最小值设置为原查找范围的一半。
相关文章推荐
- java基础-第四节 数组和内存结构
- java基础-第二节 入门
- java基础-第一节 常识
- 菜鸟好文推荐(十)——Spring基础知识汇总 Java开发必看
- java中引用js文件
- 关于java代码中的异常理解
- java 对数字输出格式规范的函数 DecimalFormat
- jdk7下载地址
- Spring依赖注入——java项目中使用spring注解方式进行注入
- dwr js与java互相调用
- Java多线程总结
- MyEclipse逆向生成实体类和Hibernate映射文件
- jdk带的一些工具,强悍
- Eclipse安装testng失败,提示MD5值错误
- Java复习第四天
- java当中float以及double数据类型的掌握
- Java集合类详解
- cxf与spring的整合
- java中import机制(指定import和import *的区别)
- 成绩查询系统Java版-我们要做的还有很多