package com.syh.demo;
/**
* 数组{1,3,9,5,7,6,2,4,8}
* 先进行冒泡排序,然后通过二分查找的方式,找到数据5的下标并输出
* @author Syh
*/
public class Demo {
public static void main(String[] args) {
int[] nums = {1, 3, 9, 5, 7, 6, 2, 4, 8};
int temp;
//冒泡排序
for (int i = 0; i < nums.length - 1; i++) { //外层循环控制轮数
for (int j = 0; j < nums.length - 1 - i; j++) { //内层循环控制每一轮的次数
if (nums[j] > nums[j + 1]) {
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
System.out.println("遍历数组:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + "\t");
}
System.out.println();
//二分查找
int num = 5;//需要查找的数据
int max = nums.length - 1;//最大值的下标
int min = 0;//最小值的下标
int mid = (max + min) / 2;//中间值的下标
while (true) {
if (nums[mid] > num) {
max = mid - 1;
} else if (nums[mid] < num) {
min = mid + 1;
} else {
System.out.println("数据" + num + "找到了,下标为:" + mid");
break;
}
if (min > max) {
System.out.println("没有找到数据!");
break;
}
mid = (max + min) / 2;//更新中间值
}
}
}
冒泡排序,二分查找
于 2022-01-24 17:50:57 首次发布