package Hello;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class Array {
public static void main(String[] args) {
// OneArr();
// FindArrMaxAndMin();
// FindByBinary();
// SortArr();
ArraysApi();
}
/**
* 一维数组
*/
public static void OneArr() {
// 方法1
int[] intArrs = new int[4];
intArrs[0] = 1;
// length取得是声明的长度
System.out.println(intArrs.length);
// 方法二
int[] intArrs2 = new int[] { 1, 2, 3, 4 };
for (int i = 0; i < intArrs2.length; i++) {
System.out.println(intArrs[i]);
}
// 方法三
int[] intArrs3 = { 10, 11, 12 };
for (int i = 0; i < intArrs3.length; i++) {
System.out.println(intArrs3[i]);
}
}
/**
* 一维数组求最大值和最小值
*/
public static void FindArrMaxAndMin() {
int[] intArrs = { 10, 2, 1, 30, 19, 29 };
// Max
int num = intArrs[0];
for (int i = 0; i < intArrs.length; i++) {
int indexNum = intArrs[i];
if (indexNum > num) {
num = indexNum;
}
}
System.out.println("最大值:" + num + "");
// min
for (int i = 0; i < intArrs.length; i++) {
int indexNum = intArrs[i];
if (indexNum < num) {
num = indexNum;
}
}
System.out.println("最小值:" + num + "");
}
/**
* 利用二分法查找有序数组
*/
public static void FindByBinary() {
int[] numArrs = { 1, 3, 4, 6, 8, 11 };
int findNum = 3;
int findIndex = -1;
int startIndex = 0;
int endIndex = numArrs.length - 1;
while (startIndex <= endIndex) {
System.out.println("循环一次*******");
findIndex = (startIndex + endIndex) / 2;
if (findNum == numArrs[findIndex]) {
break;
} else if (findNum > numArrs[findIndex]) {
startIndex = findIndex + 1;
} else {
endIndex = findIndex - 1;
}
}
System.out.println("找到的数是:" + numArrs[findIndex]);
}
/**
* 三种排序算法
*/
public static void SortArr() {
int[] arr = { 1, 3, 10, 2, 5, 12 };
// 1.冒泡排序 原理:比较相邻的元素大小,将最大的数往下排
// for (int i = 0; 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;
// }
// }
// }
// 2.选择排序 原理:每一轮比较出最小的数 ,将最小的数往上排
// 1 和 3 10 2 5 12 比较
// 2 和 10 3 5 12比较
// 3 和 10 5 12比较
// 5 和 10 12 比较
// 10和 12比较
int minIndex = 0;
for (int i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
// 保存最小值的序号
minIndex = j;
}
}
// 位置的数值交换
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
// 3.插入排序 原理:
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
* API-Arrays类
*/
public static void ArraysApi() {
// 升序
Integer[] arr = { 1, 3, 2, 5, 10, 8 };
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println("升序:" + arr[i]);
}
System.out.println("*********************************************************************");
// 倒叙
Arrays.sort(arr, Collections.reverseOrder());
for (int i = 0; i < arr.length; i++) {
System.out.println("升序:" + arr[i]);
}
System.out.println("*********************************************************************");
// 复制
Integer[] arrCopy = Arrays.copyOf(arr, arr.length);
for (int i = 0; i < arrCopy.length; i++) {
System.out.println("复制:" + arrCopy[i]);
}
System.out.println("*********************************************************************");
// 填充
Arrays.fill(arr, 0, 1, 100);
for (int i = 0; i < arr.length; i++) {
System.out.println("填充:" + arr[i]);
}
System.out.println("*********************************************************************");
// 比较
Integer[] comArr = { 10, 3, 3 };
System.out.println("比较结果:" + Arrays.equals(arr, comArr));
System.out.println("*********************************************************************");
// 转String
String arrString = Arrays.toString(arr).replace("[", "").replace("]", "");
System.out.println(arrString);
String[] intSplit = arrString.split(",");
for (int i = 0; i < intSplit.length; i++) {
System.out.println("intSplit:" + intSplit[i]);
}
System.out.println("*********************************************************************");
}
}
还没有评论,来说两句吧...