一、算法
算法即解决某个实际问题的过程和方法
冒泡排序:每次从数组中找出最大值放在数组的后面去。
public class Test1 {
public static void main(String[] args) {
//冒泡排序
int[] arr = {5,2,3,1};
// 0 1 2 3
//定义一个循环控制排几轮
for (int i = 0; i < arr.length -1; i++) {
//第一轮 i=0 j=1 j=2 j=3
// 2,5,3,1 2,3,5,1 2,3,1,5
//第二轮 i=1 j=1 j=2
// 2,3,1,5 2,1,3,5
//第三轮 i=2 j=1
// 1,2,3,5
//定义一个循环控制每轮比较几次
for (int j = 0; j < arr.length -i -1; j++) {
//判断当前位置的元素值,是否大于后一个位置的元素值,如果大于就交换位置
if (arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
选择排序:每轮选择当前位置,开始找出后面的较小值与该位置交换。
public class Test2 {
public static void main(String[] args) {
//选择排序
int[] arr = {5,1,3,2};
// 0 1 2 3
//控制选择几轮
for (int i = 0; i < arr.length - 1; i++) {
// i = 0 第一轮 j = 1 j = 2 j = 3
// 1,5,3,2 1,5,3,2 1,5,3,2
// i = 1 第二轮 j = 2 j = 3
// 1,3,5,2 1,2,5,3
// i = 2 第三轮 j = 3
// 1,2,3,5
//控制每轮比较几次
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
二分查找(折半查找):数组中的数据必须是有序的,每次排除一半的数据。
public class Test3 {
public static void main(String[] args) {
int[] arr = {7,23,79,81,183,127,131,147};
System.out.println(binarySearch(arr, 127));
}
public static int binarySearch(int[] arr, int data){
//定义两个变量,一个在左,一个在右
int left = 0;
int right = arr.length - 1;
while (left <= right){
int mid = (left + right) / 2;
//如果要找的数值比中间数值小
if(data < arr[mid]){
//则向左查找,右截止位置=中间位置-1
right = mid - 1;
}
//如果要找的数值比中间数值大
else if (data > arr[mid]){
//则向右查找,左截止位置=中间位置+1
left = mid + 1;
}else {
//中间位置处的元素刚好等于要找到元素
return mid;
}
}
return -1;//代表没有找到数据
}
}
二、正则表达式
正则表达式:就是由一些特定字符组成,代表的是一个规则。
作用一:用来校验数据格式是否合法
作用二:在一段文本中查找满足要求的内容
三、异常
1.认识异常
异常就是程序运行中出现的问题。
解决编译时异常的两种办法
public class Test1 {
public static void main(String[] args) throws ParseException{
// try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2024-11-11 10:21");
System.out.println(d);
// } catch (ParseException e) {
// e.printStackTrace();
// }
}
}