目录
排序算法
冒泡排序
int[] arr = {5,7,4,2,3};
for(int i = 0; i < arr.size() - 1;i++){
for(int j = 0;j < arr.size() - i - 1;j++){
if(arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
]
选择排序
int[] arr = {5,7,4,2,3};
for(int i = 0;i < arr.size() - 1;i++){
for(int j = i + 1;j < arr.size(); j++){
if(arr[i] > arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
int[] arr = {5,7,4,2,3};
for(int i = 0;i < arr.size() - 1;i++){
int minIndex = i;
for(int j = i + 1;j < arr.size(); j++){
if(arr[minIndex] > arr[j]){
minIndex = j;
}
}
if(i != minIndex){
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
查找算法
二分查找
前提:数据有序
int[] arr = {4,7,11,23,33,35,38,61,78,89};
binarySearch(arr,61);
Arrays.binarySearch(arr,61); // 已有算法
public static int binarySearch(int[] arr, int data){
int left = 0;
int right = arr.size() - 1;
while(left <= right){
int middle = (left + right) / 2;
if(data < arr[middle]{
right = middle - 1
}else if(data > arr[midddle]{
left = middle + 1;
}else{
return middle;
}
return -1;
}
正则表达式
由特定的字符组成,代表一个规则
1.校验数据格式是否合法
2.在一段文本中查找满足要求的内容
// 全为数字 长度在6~20 不以0开头
String data = "347197823"
data != null && data.matches("[1-9]\\d{5,19}") //[1-9]是限制了开头第一位数据,同时占了一位,、\d代表全是数字,{5,19}减去开头第一位,剩余长度应在5-19
书写规则
[...]是匹配单个字符!
用\d时,其实实际格式是\\d
对邮箱的匹配 \\w{2,}@\\w{2,20}\\(.\\w{2,10}){1,2}
查找信息
replaceAll替换
split分割
异常
自定义异常
我不懂为什么要自定义,报错之后直接去对应地方看不行吗?
异常的处理
1.throws
2.try-catch
直接throws Exception
哈哈,父类直接包括了所有异常哈哈,神金
尝试修复 好