/*
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;
}