**冒泡排序**
每次比较一轮都可以得到一个最大值/最小,
比较轮数 = 数组长度-1次
比较次数 = 数组长度-轮数
两两相比大靠前 降序,两两相比小靠前 升序
public class Bubble_Sort {
public static void main(String[] args) {
int temp;
int[] age={10,2,3,50,30,20,60};
//冒泡排序
//外层循环控制轮次 一共执行 数据个数-1 次
for (int i = 0; i < age.length-1;i++){
//内循环控制比较次数,比较次数为
//第1轮 比较总次数-1
//第2轮 比较总次数-1-1
//第2轮 比较总次数-1-2
for (int j = 0; j < age.length-i-1; j++){
if (age[j]>age[j+1]){
temp = age[j];
age[j] = age[j+1];
age[j+1] = temp;
}
}
}
for (int i = 0; i < age.length; i++) {
System.out.println(age[i]);
}
}
}
总结:
冒泡排序最重要的就是,两数比较的思想,注意比较轮数,比较次数,条件注意变化即可
**二分查找**(数组必须有序排列)
public class Binary_Search {
public static void main(String[] args) {
int[] nums = {10,20,30,40,50,60,70,80,90};
//要查找的数据
int num = 20;
//三个关键变量
//1. 最小范围下标
int minIndex = 0;
//2.最大范围下标
int maxIndex = nums.length - 1;
//3.中间数据下标
int centerIndex = (maxIndex+minIndex)/2;
while (true){
if (nums[centerIndex] > num){
//中间数较大
maxIndex = centerIndex -1;
}else if (nums[centerIndex] < num){
//中间数较小
minIndex = centerIndex + 1;
}else {
//找到数据 数据位置centerIndex
break;
}
//查找不到的情况
if (minIndex > maxIndex){
centerIndex = -1;
break;
}
//当边界发生变化,更新中间下标
centerIndex = (minIndex+maxIndex)/2;
}
System.out.println(centerIndex);
}
}