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

面相對象:是相對面向過程而言的一種編程方式,將問題簡單化.


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