import org.omg.Messaging.SyncScopeHelper;
public class ArrayDemo02 {
public static void main(String[] args) {
// 数组的常用操作
// 求最值(最大最小)
int[] arr= {34,89,45,67,58,98,120,458,35,-47};
System.out.println(getMax(arr));
System.out.println(getMin(arr));
// 选择排序法和冒泡排序法
// 1.选择排序法
sortwithselect(arr);
System.out.println("选择排序后");
printArr(arr);
// 冒泡排序法
sortwithMP(arr);
System.out.println("-------冒泡排序后");
printArr(arr);
//查找(顺序查找和二分查找)
}
// 冒泡排序
private static void sortwithMP(int[] arr) {
// TODO Auto-generated method stub
for (int i = 0; i < arr.length-1; i++) {
// arr.length-1-i:冒泡排序内层控制的次数需要递减,因为大数已经在数组的最后了,不需要再比较了
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
// 打印数组
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
// 选择排序数组
private static void sortwithselect(int[] arr) {
// 外层 控制的是要进行多少轮比较
for (int i = 0; i < arr.length-1; i++) {
// 内层控制每层要比较多少次
for (int j = i; j < arr.length-1; j++) {
// 比较并进行交换
if (arr[i]>arr[j+1]) {
// 交换两个数
int temp=arr[i];
arr[i]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
/**
* 求数组中的最大数
* @param arr
* @return 最大数
*/
// 封装一个求最大值的函数,用于查询数组中的最大值
public static int getMax(int[] arr) {
// 需要先将每个数拿出来进行一一比较
int max=arr[0];
for (int i = 1; i < arr.length; i++) {
// 将每个数与max比较,大的留下
if (arr[i]>max) {
max=arr[i];
}
}
return max;
}
/**
* 求数组中的最小数
* @param arr
* @return 最小数
*/
// 求最小值
public static int getMin(int[] arr) {
int min=arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]<min) {
min=arr[i];
}
}
return min;
}
}