java基础第三天_数组

1.定义一个函数,函数功能是动态提取int[]中元素的最大值。

package third_day;


/**

 * @author admin

 *

 */

public class shuzu {

public static int getMax(int[] bitch) {

if (bitch == null || bitch.length == 0) {

System.out.println("数组不存在");

return -1;

}

int temp = bitch[0];

for (int i = 0; i < bitch.length; i++) {

if (temp < bitch[i]) {

temp = bitch[i];

}

}

return temp;

}


public static void main(String[] args) {

int[] bitch = { 22, 55, 88, 770 };

System.out.println(getMax(bitch));


}


}


2,定义一个函数,从数组中查询指定的元素首次出现的位置。

package third_day;


/**

 * @author admin

 *

 */

public class search_Index {

public static int getSearchIndex(int[] arr, int num) {

if (arr == null || arr.length == 0) {

System.out.println("非法数组");

return -1;

}

int index = -1;

for (int i = 0; i < arr.length; i++) {

if (num == arr[i]) {

index = i;

break;

}

}

return index;

}


public static void main(String[] args) {

search_Index p = new search_Index();

int[] arr = { 55, 55, 22, 88, 66, 4, 11 };

int num = 4;

int q = p.getSearchIndex(arr, num);

System.out.println(q);

}

}

3.定义函数,完成冒泡排序,大数下沉。

package third_day;


/**

 * @author admin

 *

 */

public class Bubble {

public static int[] orderData(int[] arr) {

for (int i = 0; i < arr.length - 1; i++) {

int temp = 0;

for (int j = 0; j < arr.length - 1 - i; j++) {

if (arr[j] > arr[j + 1]) {

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

return arr;

}


public static void printArray(int[] arr) {

for (int w = 0; w < arr.length; w++) {

System.out.print(arr[w] + " ");

}

}


public static void main(String[] args) {

int[] arr = { 66, 45, 558, 54, 212, 32, 174, 999,985, };

Bubble pig = new Bubble();

pig.printArray(orderData(arr));

}

}

/*4.折半查找。

package third_day;

import org.omg.Messaging.SyncScopeHelper;

/**
 * @author admin
 *
 */
public class zheBanFind {
	public  int findIndex(int[] arr, int x) {
		int a = 0;
		int b = arr.length - 1;
		int mid =0;
		while (a <= b) {                         
			mid=(a+b)/2;
			if (arr[mid] < x) {       //如果折半数组值在左边,则a不变,b左移
				a = mid + 1;
			} else if (arr[mid] > x) {//如果折半数组值在右边,则b不变,a右移
				b = mid - 1;
			} else if (arr[mid] == x) {
				return mid;
			}
		}
		return -1;
	}
	public static void main(String[] args) {
		zheBanFind p=new zheBanFind();
		int[] arr={1,5,6,7,12,13,14,52,65,69,78,79,81,89,83,99};
		int x=81;
		System.out.println(p.findIndex(arr, x));
	}
}

5.定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];

package third_day;


/**

 * @author admin 二维数组的转置

 * 

 *

 */

public class matrix_transpose {

public static int[][] transArray(int[][] arr) {

int temp = 0;

for (int i = 0; i < arr.length - 1; i++) {

for (int j = i + 1; j < arr[i].length; j++) {

temp = arr[i][j];

arr[i][j] = arr[j][i];

arr[j][i] = temp;

}

}

return arr;

}


public static void outData(int[][] arr) {

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[i].length; j++) {

System.out.print(arr[i][j] + "\t");

}

System.out.print("\n");

}

}


public static void main(String[] args) {

int[][] arr = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },{ 21, 22, 23, 24, 25 } };

matrix_transpose p = new matrix_transpose();

p.outData(arr);

int[][] array = p.transArray(arr);

System.out.println("--------------");

outData(array);

}

}

7.遍历三维组数,横向输出三维数组的每一个层。

    

//7.遍历三维组数,横向输出三维数组的每一个层。


/*

class Demo {

public static void main(String[] arge){

int[][][] array = {{{1,2,3},{4,5,6},{7,8,9}},{{11,12,13},{14,15,16},{17,18,19}},{{31,32,33},{34,35,36},{37,38,39}}};

show(array);

}

public static void show (int[][][] array) {

for (int a=0; a<array.length; ++a) {

for (int b=0; b<array[a].length; ++b) {

for (int c=0; c < array[b].length; ++c)

          System.out.print(array[b][a][c] + "\t");

}

}

System.out.println();

}

}

}

*/

7.定义一个类:Dog 有名称 color age cry();

答:

class DogDemo {

public static void main(String[] args) {

Dog job = new Dog("Job", 2);

System.out.println("Name:" + job.getName() + " Age:" + job.getage());

job.setName("lala");

job.setAge(3);

System.out.println("Name:" + job.getName() + " Age:" + job.getage());

}

}


class Dog {

private String name;

private int age;


public void cry() {

System.out.println("wangwang~!");

}


public Dog(String name, int age) {

this.name = name;

this.age = age;

}


public void setName(String name) {

this.name = name;

}


public void setAge(int age) {

this.age = age;

}


public String getName() {

return this.name;

}


public int getage() {

return this.age;

}

}


8.阐述

答:

1) 获取数组的最大值,解决方法:遍历整个数组,通过if条件判断比较出最大值

2) 查询数组中某个值,解决方法:遍历整个数组,if条件判断,查找到这个值时,跳出循环

3) 冒泡排序:将最小/最大的数,依次沉到数组的最后完成排序.

外层循环需要进行array.length-1次,内层循环需要比较array.length-i-1次.

4) 二分查找法:要求有序数组,通过比较中间值和查找值,确定查找值所在位置(中间值的左或右),进行多次循环查找找到值的真正所在.

5) 矩阵转置问题:涉及矩阵初始化,赋值操作,转置操作注意只需对左下正三角的值进行对位交换array[i][j]=array[j][i].

6) 三位数组:抽象为魔方,分为层,每层的每行,每层的每行的每列.通过循环控制,可以横向以及纵向打印每层.具体参见代码.

7)面相对象:涉及面相对象类的定义,对象的生成,构造函数,修饰符,javabean技巧,对封装的理解.


9.阐述出来堆区,栈区,何时出现溢出,如何解决。

答:

堆区:保存对象以及成员变量栈区:保存方法以及局部变量

溢出条件:产生过多或者占用内存很大的对象函数递归调用自身可能出现栈区溢出

如何解决:1.尽可能不产生不必要的对象或成员变量1.递归操作要小心

2.设置JAVA虚拟机堆大小(java -Xms<size>) 2.采用非递归手段


10.oop

答:

面相对象:是相对面向过程而言的一种编程方式,将问题简单化.

类:是对象的抽象.

对象:是类的具体实现.

实例:就是对象.

成员变量:对象的属性变量.

成员函数:对象的方法.

public:用于修饰成员变量或者成员函数,表示公有,供其他类调用.

private:用于修饰成员变量或者成员函数,表示私有,用于封装,提高数据安全性,可通过set,get方法进行属性的改变,获取

构造函数:用于初始化对象.函数没有返回值.

this:是对象的成员变量,指向当前的对象,用于类中方法引用当前对象.

static:静态的,修饰成员变量,同类对象所共有,类也可以引用静态成员,静态方法只能访问静态成员.


你可能感兴趣的:(java,基础,作业)