选择排序、冒泡排序、二分查找法

一、选择排序:数组中的每个元素和其他元素进行比较换位置

比较示例:

arr[0]   arr[1]
arr[0]   arr[2]
arr[0]   arr[3]
arr[1]   arr[2]
arr[1]   arr[3]
arr[2]   arr[3]

可以看出,选择排序是先通过首个元素依次跟后面的元素进行比较
代码示例:

//选择排序
	public static void selectSort(int[] arr){
		for(int i=0;i<arr.length-1;i++){
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]>arr[j]){
					//数组换位
					int temp = arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
	}

二、数组的冒泡排序:数组的相邻元素换位置

arr[0] arr[1]
arr[1] arr[2]
arr[2] arr[3]

arr[0] arr[1]

arr[1] arr[2]

冒泡排序是通过相邻元素之间的比较来排序的
代码示例:

//冒泡排序
	public static void bubbleSort(int[] arr){
		for(int i=0;i<arr.length-1;i++){
			//每次的内循环的比较从0索引开始,每次都在递减
			for(int j=0;j<arr.length-i-1;j++){
				//比较的索引是j和j+1
				if(arr[j]>arr[j+1]){
					int temp = arr[j];
					arr[j]=arr[j+1];
					arr[j+1] =temp;
				}
			}
		}
		
	}

三、二分查找法:(折半查找)

前提:被查找的数组中的元素必须是有序的
中间索引计算:
(max+min)/2
指针思想:
折半后的指针索引和被查找元素比较

	元素>中间索引上的元素  小指针=中间+1
	元素<中间索引上的元素  大指针=中间-1
	小指针索引>大指针索引,结束
	没找到,返回-1的索引
	元素==数组中间索引上的元素,结束
	返回结果就是中间索引

代码示例:

/*
		折半查找
		返回值:索引
		参数:数组,被查找的元素
	*/
	public static int binarySearch(int[] arr,int key){
		//定义三个指针变量
		int min=0;
		int max=arr.length-1;
		int mid = 0;
		//循环折半,条件min<=max
		while(min<=max){
			//公式,计算中间索引
			mid=(min+max)/2;
			//让被找元素,和中间索引元素进行比较
			if(key >arr[mid]){
				min=mid+1;
			}else if(key<arr[mid]){
				max=mid-1;
			}else{
				//找到元素,返回元素索引
				return mid;
			}
		}
		//没有找到元素,返回-1
		return -1;
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值