[Java]-冒泡排序与二分法查找基础算法

Java实现冒泡排序的基础算法

原理:比较两个相邻的元素,将值大的元素交换到右边

如果要排序 {5,8,20,1,6,9,3,15},这几个数
首先第一回排序:
5和8比较,5小于8,不换位置,{5,8,20,1,6,9,3,15}
8与20比较,8小于20,不换位置 ,{5,8,20,1,6,9,3,15}
20与1比较,20大于1,交换位置,{5,8,1,20,6,9,3,15}
20与6比较,20大于6,交换位置,{5,8,1,6,20,9,3,15}
20与9比较,20大于9,交换位置,{5,8,1,6,9,20,3,15}
20与3比较,20大于3,交换位置,{5,8,1,6,9,3,20,15}
20与15比较,20大于15,交换位置,{5,8,1,6,9,3,15,20}
第一回排序完成
接着重复进行第二回、第三回以此类推,直到排序结果完成从小到大排序为止

Java算法描述如下:
package cn.zhazong710.test;

import java.util.Arrays;

public class TestBubbleSort {
	
	public static void main(String[] args) {
		
		int[] values = {5,8,20,1,6,9,3,15};
		int temp = 0;
		
		for(int i=0;i<values.length-1;i++){
			
			for(int j=0;j<values.length-1-i;j++) {
				//比较大小换顺序
				if(values[j]>values[j+1]){
					
					temp = values[j];
					values[j] = values[j+1];
					values[j+1] = temp;
				}
				
				System.out.println(Arrays.toString(values));
			}
			
			System.out.println("##################");
		}
		
	}
}
运行结果如下:
[5, 8, 20, 1, 6, 9, 3, 15]
[5, 8, 20, 1, 6, 9, 3, 15]
[5, 8, 1, 20, 6, 9, 3, 15]
[5, 8, 1, 6, 20, 9, 3, 15]
[5, 8, 1, 6, 9, 20, 3, 15]
[5, 8, 1, 6, 9, 3, 20, 15]
[5, 8, 1, 6, 9, 3, 15, 20]
##################
[5, 8, 1, 6, 9, 3, 15, 20]
[5, 1, 8, 6, 9, 3, 15, 20]
[5, 1, 6, 8, 9, 3, 15, 20]
[5, 1, 6, 8, 9, 3, 15, 20]
[5, 1, 6, 8, 3, 9, 15, 20]
[5, 1, 6, 8, 3, 9, 15, 20]
##################
[1, 5, 6, 8, 3, 9, 15, 20]
[1, 5, 6, 8, 3, 9, 15, 20]
[1, 5, 6, 8, 3, 9, 15, 20]
[1, 5, 6, 3, 8, 9, 15, 20]
[1, 5, 6, 3, 8, 9, 15, 20]
##################
[1, 5, 6, 3, 8, 9, 15, 20]
[1, 5, 6, 3, 8, 9, 15, 20]
[1, 5, 3, 6, 8, 9, 15, 20]
[1, 5, 3, 6, 8, 9, 15, 20]
##################
[1, 5, 3, 6, 8, 9, 15, 20]
[1, 3, 5, 6, 8, 9, 15, 20]
[1, 3, 5, 6, 8, 9, 15, 20]
##################
[1, 3, 5, 6, 8, 9, 15, 20]
[1, 3, 5, 6, 8, 9, 15, 20]
##################
[1, 3, 5, 6, 8, 9, 15, 20]
##################

Java实现二分法查找基础算法

原理:首先需要排好顺序,其次将排序好的数据分成各一半,比较所查找的数据与中间数据大小,接着再次分半查找

如果要查找{5,8,20,1,6,9,3,15}数据中的5
首先排序成{1, 3, 5, 6, 8, 9, 15, 20},比较中间数6,5小于6
在{1,3,5}中查找,比较中间数3,5大于3,查找到5

Java算法描述如下:
package cn.zhazong710.test;

import java.util.Arrays;

public class TestBinarySearch {
	
	public static void main(String[] args) {
		
		int[] arr = {5,8,20,1,6,9,3,15};
		Arrays.sort(arr);  //将数组排序
		
		System.out.println(Arrays.toString(arr));
		System.out.println(myBinarySearch(arr, 5)); 
                 //查找值为5,打印出5的位置
		
	}
	
	public static int myBinarySearch(int[] arr,int value){
		
		int low = 0;
		int high = arr.length-1;
		
		while(low<=high){
			
			int mid = (low+high)/2;
			
			if(value==arr[mid]){
				return mid;
			}
			
			if(value>arr[mid]){
				low = mid+1;
			}
			
			if(value<arr[mid]){
				high = mid-1;
			}
			
		}
		
		return -1;
		
	}
	
}
运行结果如下:
[1, 3, 5, 6, 8, 9, 15, 20]
2

闸总710

感谢观看闸总博客,本博客为个人学习交流使用
订阅
提醒
guest

0 评论
内联反馈
查看所有评论