冒泡排序+二分查找(不是很推荐使用)

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。冒泡排序+二分查找(不是很推荐使用),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

这一篇,我将写一下常用的算法

简单二分查找配合冒泡排序(不提倡这两种结合)

public class 简单算法 {
	public static void main(String[] args) {
		/**
		 * 前提条件,我们需要的是将数组进行有序排序,不能是乱序的
		 */
		int arr[] = new int[]{1,2,54,4,64,600,66,74 };
		System.out.println("排序前");
		for(int ae : arr) {
			System.out.print( ae + "  ");
		}
		System.out.println();
		Sort(arr);
		System.out.println("排序后");
		for(int ae : arr) {
			System.out.print(  ae + "  ");
		}
		System.out.println();
		//采用的是二分查找
		int search = TwoSearch(arr,4);  //给定一个数组,要求从数组中查找某个具体的值
		System.out.println("输出查到的数值的数组下标位置为");
		System.out.println(search);
	}


	public static int TwoSearch(int arr[],int data) {
		//定义两个指针,第一个指向第一个数据和最后一个数据
		int left = 0; 
		int right = arr.length - 1; //指向数组的最后一个值

		//当两个指针不相等,那么数组就没有被完全遍历完。
		while(left <= right) {
			//我们从中间值开始判断
			int mid = (left + right) / 2;
			if(arr[mid] == data) {
				//如果中间值数字等于我们想要的那个值
				return mid; //直接返回
			}else if(arr[mid] < data){
				//如果这个数小于我们想要的值,那么说明这个值在右边
				left = mid + 1; 
			}else {
				//否则的话,这个数必定在左边
				right = right - 1 ;
			}
		}
		return -1;
	}


	//冒泡排序
	public static void Sort(int a[]) {
		//对数组进行有序排序

		//先对数组进行排序
		for(int i = 0 ; i <a.length ; i++) {
			for(int j =0; j <a.length - i -1; j++) {
				int temp = 0; //定义一个存储变量
				if(a[j] > a[j+1]) {  //判断前后两个数值的大小
					temp = a[j +1]; //将后边小的数存到temp中去
					a[ j +1 ] = a[j]; //交换两个数值位置
					a[j] = temp;
				} 
			}
		}
	}
} 

结果如下
排序前
1 2 54 4 64 600 66 74
排序后
1 2 4 54 64 66 74 600
输出查到的数值的数组下标位置为
2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/197999.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!