码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-04 19:21:30      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:java、

/*


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

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

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

4.折半查找。

5.阐述

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

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

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

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

10.oop


------------------------------------------------------------------


*/



//1,


class FuntionDemo

{

/**

辅助函数

*/

//打印函数

public static void sop(String str)

{

System.out.println(str);

}

//打印一维数组

public static void printArray(int[] arr)

{

System.out.print("[");

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

{

if(i==arr.length-1)

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

else

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

}

System.out.println();

}

//打印二维数组

public static void printArray(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]+"  ");

}

System.out.println();

}

}

//main函数,程序的入口

public static void main(String[] args)

{

sop("数组中的最大值为"+getMax(new int[]{1,2,9,3,7}));

sop("指定元素在数组中的角标位置为"+getIndex(new int[]{1,2,9,3,7},7));

int[] arr =bubbleSort(new int[]{1,2,9,3,7});

sop("排序后数组如下:");

printArray(arr);

sop("折半查找出指定元素位置为:"+halfSearch(new int[]{1,2,9,3,7},9));

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

printArray(arr1);

transMatrix(arr1);

sop("--------------转置后如下----------------");

printArray(arr1);

}

/**

作业函数

*/

//1、获取int[]中元素最大值

public static int getMax(int[] arr)

{

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

{

System.out.println("数组输入异常");

return -1;

}

int temp = arr[0];

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

{

if(arr[i]>temp)

temp=arr[i];

}

return temp;

}

//2、获取指定元素首次出现位置

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

{

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

if(arr[i]==key)

return i;

return -1;

}

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

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

{

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

{

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

{

int temp=0;

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

{

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

return arr;

}

//4、折半查找

/*

思路:定义min,max,mid三个数组角标变量,每次二分,将key与arr[mid]处值比较

key>arr[mid],则key的角标在[mid+1,max]之间

key<arr[mid],则key的角标在[min,mid-1]之间

key=arr[mid],返回mid角标,

循环条件为min<max,当min>max时,max-min=负数,说明二分后没有找到该元素。

*/

public static int halfSearch(int[] arr,int key)

{

int mid,min=0,max=arr.length-1;

while(min<=max)

{

mid=(min+max)/2;

if(arr[mid]==key)

{

return mid;

}

else if(arr[mid]<key)

{

min=mid+1;

}

else

{

max=mid-1;

}

}

return -1;

}

//5、矩阵转置

/*

思路:矩阵在计算机当中其实是一个二维数组arr[i][j]

i表示矩阵的行,j表示矩阵的列。

转置操作的原理是将矩阵各个位置上的元素的行列角标互换

我们知道,对角线上的数行列相等,

*/

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

{

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

{

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

{

int temp = arr[i][j];

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

arr[j][i]= temp;

}

}

return arr;

}


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

标签:java、

原文地址:http://liubx.blog.51cto.com/11235064/1770073

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!