1.排序
排序就是指让保存的元素按照一定的规则进行存储
比如成绩按降序排序,班级前三名,就取前三个数据就行
1.1 冒泡排序
1.2 选择排序
public static void selectSort(int[] arr) {
int count = 0;
int change = 0;
for (int current = 0; current < arr.length - 1; current++) {
// 假设 当前这个元素 就是最小的
int min = current;
// current+1 是因为 自己没有必要和自己比较
for (int i = current + 1; i < arr.length; i++) {
count++;
// 判断是否有其他元素比min还小的
if (arr[min] < arr[i]) {
// 如果有 就把这个比min还小的元素下标,赋值给min
min = i;
change++;
}
}
// 判断 当前current元素 是否是最小的
if (min != current) {
// 如果第一个元素不是最小的,就让该元素和最小的元素换位
int temp = arr[current];
arr[current] = arr[min];
arr[min] = temp;
}
}
System.out.println("选择排序完成,执行"+count+"次,换位"+change+"次");
}
2.查找元素
1.查找数据,比如在一堆数据中要找到某一个并返回其索引,未找到返回-1
返回值为boolean;真就是true 假就是false
返回数字:比如返回索引,能找到就返回索引,找不回就返回-1
引用类型:真就是对象,假就是null
2.1 顺序查找
2.2 二分查找
//二分查找 又称为折半查找 需求数据有序
public static int binarySearch(int arr[], int target){
int count=0;
// 1.确定开始和结束还有中间数据
int startIndex=0;
int endIndex=arr.length-1;
int m=(startIndex+endIndex)/2;
//循环比较
while(startIndex<=endIndex){
count++;
// 如果目标数据等于中间数据,返回中间数据的索引即可
if(target==arr[m]){
System.out.println("執行了"+count+"次");
return m;
}
// 如果目标数据大于中间数据的话,则在后半段继续查找,起始=中间+1,结束不变,再生成中间数据
if(target>arr[m]){
startIndex=m+1;
}else {
// 如果小于,则取前半截,起始不变,结束=中间-1,再生成中间数据
endIndex=m-1;
}
// 生成中间数据
m=(startIndex+endIndex)/2;
}
//能执行到这里,说明不存在
System.out.println("执行了"+count+"次");
return -1;
}