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

本文深入探讨了Java中二分查找、冒泡排序和插入排序的实现。通过实例展示了冒泡排序如何将初始数组12, 3, 45, 89, 33, 22排序成12, 3, 22, 33, 45, 89,以及二分查找的基本应用。对于初学者理解数据结构和排序算法非常有帮助。" 79778579,6886675,动态规划解决子集和问题,"['算法', '动态规划', '数学', '编程挑战']
摘要由CSDN通过智能技术生成

二分查找

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  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值