package xiaoneiwang;
public class Test {
public static void main(String[] agrs){
//插入排序算法
int[] arr = {10,1,90,7,23,6,2,34};
//假设第一个数是一个有序数组
//拿后面的每一个数往这个数组插入
int[] arr2 = sort3(arr);
for(inti : arr2){
System.out.println(i);
}
}
//插入排序发 假设前面是一个已经排好的序列 (从前面只有一个开始)
publicstatic int[] sort(int[]arr){
for(inti=1;i<arr.length;i++){
intindexValue = arr[i];
int index = i-1;
while(index>=0&&indexValue<arr[index]){
arr[index+1] =arr[index];
index--;
}
arr[index+1] =indexValue;
}
returnarr;
}
publicstatic int[] sort2(int[]arr){
//冒泡排序
int temp = 0;
for(inti=0 ;i<arr.length -1;i++){
for(intj=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
returnarr;
}
publicstatic int[] sort3(int[]arr){
//选择排序法
int temp;
for( int i=0;i<arr.length;i++){
//假设arr[0]最小 拿他和后面的每一个数进行比较
int min = arr[i];
//记录最小数的下标
int index = i;
for(intj=i+1;j<arr.length;j++){
if(min>arr[j]){
min=arr[j];
index=j;
}
}
//档推出for循环时找到最小值
temp = arr[i];
arr[i] =arr[index];
arr[index] =temp;
}
returnarr;
}
//二分查找法,用于已经排好序的数组
public static void erFen(int leftIndex,int rightIndex,int value,int[] arr){
//找中间的下标
int index = (leftIndex+rightIndex)/2;
//判断中间的下标的数是否大于要查找的数
if(arr[index]>value){
//如果大在左边查找
erFen(leftIndex,index-1,value,arr);
}else if(arr[index]<value){
//如果不是在他的右边查找
erFen(index+1,rightIndex,value,arr);
}else if(arr[index]==value){
System.out.println("zhaodaol"+index);
}
}