冒泡:相邻的两个比较,如果前面的比后面的大就换位置
package lesson04;
public class demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//数组高级选择排序原理
int[] arr = {23,55,56,32,54};
for(int i=0;i<arr.length-1;i++) {
System.out.println("第"+(i+1)+"轮比较");
for(int j=i+1;j<arr.length;j++) {
System.out.println(i+"="+j);
if(arr[i]>arr[j]) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
//遍历
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
2.数组高级选择排序原理
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
package lesson03;
public class demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//冒泡排序
int[] arr = {12,34,45,76,32};
//1.比较4轮
for(int i=0;i<arr.length-1;i++) {
System.out.println("第"+(i+1)+"轮比较");
//2.打印出每一轮比较的对应索引
for(int j=0;j<arr.length-1-i; j++) {
//System.out.println(j);
int left = j;
int right = j+1;
System.out.println(left+"-"+right);
//换位置
if(arr[left]>arr[right]) {
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
3.数组高级二分查找原理
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表。二分查找的目的是查找元素的索引,有个前提是数组元素必须为有序
package lesson04;
public class demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {11,22,33,44,55,66,77};
int num = 22;
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;
//查找的算法
int index = -1;
while(true) {
if(arr[mid]==num) {
index = mid;
break;
}
if(arr[mid]>num) {
max = mid - 1;
mid = (min + max)/2;
}else {
min = mid + 1;
mid = (min+max)/2;
}
if(min>max) {
break;
}
}
System.out.println(num + "索引:"+index);
}
}