冒泡排序 : 相邻的两个元素比较,符合条件交换 位置。
package cn.itcast.review;
import java.util.Arrays;
/*
冒泡排序 : 相邻的两个元素比较,符合条件交换 位置。
*/
public class Demo4 {
public static void main(String[] args) {
int[] arr = {2,5,10,8,1}; //所谓的排序就是将一个个的最大元素放在对应 的位置上。
for(int j = 0 ; j<arr.length -1; j++){ // 控制的轮数,每一轮都可以找出一个最大值。
//把最大值放在最后一个位置
for(int i = 0 ; i<arr.length-1-j ; i++){ //控制的是相邻的两个元素比较。
//相邻的两个元素比较
if(arr[i] >arr[i+1]){
int temp =arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
/* //把老二放在倒数第二个位置上
for(int i = 0 ; i<arr.length-1-1 ; i++){
//相邻的两个元素比较
if(arr[i] >arr[i+1]){
int temp =arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//把老三放在倒数第三个位置上
for(int i = 0 ; i<arr.length-1-2 ; i++){
//相邻的两个元素比较
if(arr[i] >arr[i+1]){
int temp =arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//把老四放在倒数第四个位置上
for(int i = 0 ; i<arr.length-1-3 ; i++){
//相邻的两个元素比较
if(arr[i] >arr[i+1]){
int temp =arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
*/
System.out.println("数组的元素: "+Arrays.toString(arr));
}
}
折半查找法(二分法) :折半查找法使用的前提是数据必须 是有序的。
/*
折半查找法(二分法) :折半查找法使用的前提是数据必须 是有序的。
*/
public class Demo5 {
public static void main(String[] args) {
int[] arr = {12,15,17,19,30};
int index = halfSearch(arr,0);
System.out.println("idnex:"+ index);
}
public static int halfSearch(int[] arr,int target){
int max = arr.length - 1;
int min = 0;
int mid = (max+min)/2;
while(true){
if(target>arr[mid]){
min = mid+1;
}else if(target<arr[mid]){
max = mid-1;
}else{
return mid;
}
//重新计算中间值
mid = (min+max)/2;
//找不到
if(max<min){
return -1;
}
}
}
}