二分查找
package sorts;
import java.lang.reflect.Array;
import java.util.Arrays;
public class BinarySearch {
public static int sort(int[] array,int total) {//total为查找的目标值
int left = 0,right=array.length-1,mid;
while(left<=right) {
mid=(left+right)/2;//中间位置
if(array[mid]==total) {
return mid;//查找中间位置成功
}else if(total<array[mid]){//80<90,查找前排
right=mid-1;
}else {//80>60,查找后排
left=mid+1;
}
}
return -1;//查找不成功
}
public static void main(String[] args) {
int array[]=new int[]{12,3,45,89,33,22};//!!
int key=89;
System.out.println("原数组:");
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}//12 3 45 89 33 22
System.out.println();
System.out.println("排序后的数组:");
for(int i=0;i<array.length;i++) {
Arrays.sort(array);
System.out.print(array[i]+" ");
}//
System.out.println();
System.out.println("您查找的"+key+"在下标第"+sort(array,key)+"个");
}
}
## 运行结果:
原数组:
12 3 45 89 33 22
排序后的数组:
3 12 22 33 45 89
您查找的89在下标第5个
冒泡排序
package sorts;
public class BubbleSort {
public static void sort(int[] array,int total) {
for(int index=0;index<total;index++) {//给最初的数组进行排序
for(int number=1;number<total-1;number++) {//!!第一趟排序锁定,下标为0开始进行排序,0=0代表不用再次进行排序;从(下标为1的数字)第2个数字进行排序
if(array[number]>array[number+1]) {//如果第一个数字比第二个数字大,那就交换
int temp=array[number];
array[number]=array[number+1];
array[number+1]=temp;
}//12 3 22 33 45 89 ,从后往前排序(升序);开头的12数字不变
// if(array[number-1]>array[number]) {//如果第一个数字比第二个数字大,那就交换
// int temp=array[number-1];
// array[number-1]=array[number];
// array[number]=temp;
// }//3 12 33 45 89 22 ,从前往后排序(降序);末尾的22数字不变
}
}
}
public static void main(String[] args) {
int array[]=new int[]{12,3,45,89,33,22};//!!
System.out.println("原数组:");
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}
System.out.println();
System.out.println("冒泡排序后的数组:");
for(int i=0;i<array.length;i++) {
sort(array,array.length);//静态的方法不能直接输出,有返回值的方法才可以直接输出!!【重点】
System.out.print(array[i]+" ");//注意顺序,先排序后输出!
}
}
}
## 运行结果:
原数组:
12 3 45 89 33 22
冒泡排序后的数组:
12 3 22 33 45 89
插入排序
package sorts;
public class InsertSearch {
public static void sort(int array[]) {
//遍历原来的数组,从第一个数开始遍历
for(int index=1;index<array.length;index++) {
//把待排列的数字加入到一个原数组中
int insertArray=array[index];
//初始化待插入的数字
int insertIndex;
//待插入的数字,从下标为0的数字进行比较后;若插入的数比数组的数小,那么比它大的那个数就往后移动一个位置,后插入待插入的数字
// insertIndex--为两数字之间交换后,待插入的下标insertIndex减去1
for(insertIndex=index-1;insertIndex>=0 && insertArray<array[insertIndex];insertIndex--) {
//插入的数字往后移动一个位置
array[insertIndex+1]=array[insertIndex];
//赋值交换位置
array[insertIndex]=insertArray;
}
}
}
public static void main(String[] args) {
int array[]=new int[]{12,3,45,89,33,22};//!!
System.out.println("原数组:");
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}//12 3 45 89 33 22
System.out.println();
System.out.println("插入排序后的数组:");
for(int i=0;i<array.length;i++) {
sort(array);//静态的方法不能直接输出,有返回值的方法才可以直接输出!!【重点】
System.out.print(array[i]+" ");//注意顺序,先排序后输出!
}//3 12 22 33 45 89
}
}
```## 运行结果:
原数组:
12 3 45 89 33 22
插入排序后的数组:
3 12 22 33 45 89