IT十八掌作业_java基础第三天_数组

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


class ArrayDemo

{

public static void main(String[] args)

{

int[] arr = new int[] {5,6,9,1,4};

int maxNumber = getMaxNumber(arr);

System.out.println("数组中的最大数为:"+maxNumber);


}


public static int getMaxNumber(int[] arr)

{

int temp = Integer.MIN_VALUE;

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

{

if (temp < arr[i])

{

temp = arr[i];

}

}

return temp;

}

}



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

class SearchArray 

{

public static void main(String[] args)

{

int[] arr = new int []{3,23,1,6,90,23,43,8,5};

System.out.println("首次出现的位置为" + getIndex(arr,23));

}


public static int getIndex(int[] arr,int searchNum)

{

int index=-1;

//遍历数组

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

{

if (arr[i] == searchNum)

{

index = i;

return index;

}

}


return index;

}

}


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

class BubbleSort 

{

public static void main(String[] args)

{

int [] arr = new int []{32,234,213,5,7,59,29,29,33,22,111,1};

out(sortArray(arr));

}

//数组排序

public static int[] sortArray(int[] arr)

{

int index = 0;

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

{

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

{

if (arr[i]> arr[j])

{

//交换位置

index = arr[i];

arr[i] = arr[j];

arr[j] = index;

}

}

}

return arr;

}

//输出数组

public static void out(int[] arr)

{

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

{

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

}

System.out.println();

}

}


4.折半查找。

class HalfSearch

{

public static void main(String[] args)

{

int [] arr = new int []{1,2,3,4,5,6,7,8,9,10};

System.out.println(getFind(arr,5));

}


public static int getFind(int [] arr ,int search)

{

int left = 0;

int right = arr.length-1;

int mid = 0;

int index = -1;


while (left <= right)

{

mid = (left + right)/2;


if (arr[mid] == search)

{

index = mid ;

return index;

}

else if (search < arr[mid])

{

right = mid -1  ;


}

else 

{

left = mid + 1;

}

}

return index;

}

}



6.定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];//前提条件是正方的。


class ArrayTransDemo

{

public static void main(String[] args)

{

int [][] arr = initArray(5,5);

out(arr);

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

int [][] arrNew=trans(arr,5,5);


out(arrNew); 

}


//初始化二维数组

public static int[][] initArray(int m, int n)

{

int [][] arr = new int [m][n];

int count = 0;

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

{

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

{

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

count++;

}

}


return arr;

}

//转置数组

public static int[][] trans(int[][] arr,int m , int n)

{

int [][] arrNew = new int [n][m];


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

{

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

{

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

}

}

return arrNew;

}


//打印

public static void out(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.println();

}

}

}


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

class OutHorizontalDemo 

{

public static void main(String[] args) 

{


int[][][] arrr =initArray(3,3,3);

outHor(arrr);

}


//初始化三维数组

public static int[][][] initArray(int x, int y, int z)

{

int [][][] arr = new int [x][y][z];

int count = 0;

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

{

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

{

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

{

arr[i][j][k] = count + 1;

count++;

}

}

}


return arr;

}


// 横向输出三维数组

public static void outHor(int[][][] arr) 

{

// 循环行数,每个二维数组的长度

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

{

// 输出所有列

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

{

// 输出每个层上的第i行的元素.

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

{

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

}

System.out.print(" | ");

}

System.out.println();

}

}


}



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

class Dog

{

private String name;

private String color;

private int age;

public Dog(String name, int age)

{

this.name = name;

this.age = age;

}


public String getColor()

{

return color;

}


public void setColor(String color)

{

this.color = color;

}


public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}


public int getAge()

{

return age;

}


public void setAge(int age)

{

this.age = age ;

}

public void cry()

{

System.out.println("汪汪~~~~~~~~~~~");

}

}


class DogDemo

{

public static void main(String[] args)

{

Dog dog = new Dog("keke",2);


System.out.println("Name:"+dog.getName()+"\t" + "Age:"+dog.getAge());

dog.cry();

}

}




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

栈区:保存方法以及局部变量 --递归调用自身可能出现栈区溢出

堆区:保存对象以及成员变量 --对象过大可能出现堆溢出

如何解决:1.尽可能不产生不必要的对象或成员变量

2.递归操作要小心

10.oop

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章