java数据结构之二分查找、冒泡排序、插入排序

二分查找

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  
 

你可能感兴趣的:(技能学习,数据结构,java,排序算法,二分查找)