其他分享
首页 > 其他分享> > 使用冒泡排序对一串数组进行排序并用二分查找找出某个数字下标

使用冒泡排序对一串数组进行排序并用二分查找找出某个数字下标

作者:互联网

目录

任务概述

使用冒泡排序对一串数组进行排序并用二分查找找出某个数字下标
1.创建数组nums{1,3,9,5,6,7,15,4,8};
2.对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并 输出排序后的下标;

相关概念

二分查找:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
算法要求:1.必须采用顺序存储结构。
2.必须按关键字大小有序排列。
冒泡排序:是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

冒泡排序算法的原理如下
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
3. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码

public class Day04_demo5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// TODO Auto-generated method stub
		/*对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并 输出排序后的下标*/
				//冒泡排序及二分查找
				//创建名为shuzu的数组
				int shuzu [] = {1,3,9,5,6,7,15,4,8};
				//定义变量a为过渡变量
				int a;
				//外层循环控制层数
				//外层循环次数length-1
				for (int i = 0; i < shuzu.length-1; i++)/*shuzu.length表示数组长度*/ {
					//内层循环控制次数
					//循环次数 length-i-1
					for (int j = 0; j < shuzu.length-i-1; j++) {
						//两两比较大小并循环
						if (shuzu[j]>shuzu[j+1]) {
							a = shuzu[j];
							shuzu[j]=shuzu[j+1];
							shuzu[j+1] = a;
							
						}
					}
				}
				//遍历排序好的数组并打印
		        for (int i = 0; i < shuzu.length; i++) {
					System.out.print(shuzu[i]);
					System.out.print(" ");
				}
		        System.out.println();
		        //查找变量b在数组中的位置
		        int b =6;
		        //创建三个关键变量:最小下标,最大下标,中间下标
		        int minnum = 0;
		        int maxnum = shuzu.length-1;
		        int centernum = (minnum+maxnum)/2;
		        while (true) {
		        //查找的数大于中间下标对应的数
					if (b>shuzu[centernum]) {
						//重新定义最小下标
						minnum = centernum+1;	
					}
					//查找的数小于中间下标对应的数
					else if (b<shuzu[centernum]) {
						//重新定义最大下标
						maxnum = centernum-1;
						
					}
					//查找的数等于中间下标对应的数
					else {
						break;
					}
					//所查找数不在数组中
					 if (minnum>maxnum) {
						
						centernum = -1;
						break;
					}
					 //更新中间下标
					 centernum = (minnum+maxnum)/2; 
				}
		        System.out.println("位置"+centernum);
	}

}

运行结果

在这里插入图片描述

标签:二分,下标,shuzu,冒泡排序,int,查找,centernum,排序
来源: https://blog.csdn.net/blackmores/article/details/113479478