冒泡排序与二分查找算法案例,值得学习哦!
本案例仅供Java学习,大神勿喷!!!
冒泡排序案例
public class BubbleSortTest {
public static void main(String[] args) {
/*冒泡排序:两两之间进行比较选出最大,
选出的最大值不参与下一轮的比较,最后一个只与前一个比较 length-1*/
//定义一个数组
int arr[]={1,33,54,67,8,34};
//循环次数为 arr.length-1
for (int j=0;j<arr.length-1;j++){
//如果数组本来就是有序的,就不用去比较,循环一次,没有位置的交换,那么数组就是有序
boolean orderly=false;
//每次循环选出一个最大值,选出的最大值不参与下一轮的比较
for (int i=0;i<arr.length-1-j;i++){
//如果第一个元素比第二个元素大,交换位置
if (arr[i]>arr[i+1]){
//定义一个临时变量,用来存放交换的元素
int temp=arr[i+1];
//将第一个元素赋值给第二个元素
arr[i+1]=arr[i];
//临时变量中的第二个元素赋值给第一个元素
arr[i]=temp;
orderly=true;
}
}
//如果是有序的就直接退出循环
if (!orderly)break;
}
//循环遍历数组
for (int i : arr) {
System.out.println(i);
}
}
}
二分查找算法案例
public class MidddleSearchTest {
public static void main(String[] args) {
/* 二分查找算法:
* 1有三个变量:低位,中间,高位
* 2如果查找的元素大于中间,就比较右边,中间就要变低位;
* 3如果查找的元素小于中间,就比较左边,中间就要变高位;
* */
//定义一个数组
int arr[]={11,22,33,44,55,66,77,88,99};
//需要查找的元素
int element=66;
//低位索引
int lowIndex=0;
//高位索引
int highIndex=arr.length-1;
//定义一个初始的索引(-1代表不存在的)
int index=-1;
//判断一波,如果查找的元素不是在此数组范围的,直接返回
if (element<arr[lowIndex]||element>arr[highIndex])return;
//循环的次数
while (lowIndex<=highIndex){
//中间位置
int middleIndex=(lowIndex+highIndex)/2;
//当查找的元素大于中间,就比较右边,中间就要变低位;
if (element>arr[middleIndex]){
lowIndex=middleIndex+1;
//查找的元素小于中间,就比较左边,中间就要变高位;
}else if (element<arr[middleIndex]){
highIndex=middleIndex-1;
}else {
//索引等于中位时,即为查找元素下标
index=middleIndex;
System.out.println("查找元素下标:"+index);
//循环一定要有出口,不然就成了死循环
break;
}
}
if (index==-1){
System.out.println("没有查找不到此元素");
}
}
}