Java入门-插入排序和二分法查找

Java入门-第六节-插入排序和二分法查找

 

1.插入排序

public class ArraySort{

	public static void main(String [] args){
		int [] array={1,2,6,7,2,9,12,2};//升序排列
		for(int i=1;ij;k--){//int k=i:待插入数据所在位置就是元素后移开始的下标位置;k>j:待插入数据“应该”插入位置(j)就是元素后移结束位置
				array[k]=array[k-1];//元素后置
			}
			
			/*
			 *下面代码用于将待插入数据插入到“应该”插入的下标位置
			 */
			array[j]=willSortData;
		}//该循环体每循环完一次就代表着本次待插入数据已经和前面元素是有序的了

		for(int data:array){
			System.out.print(data+" ");
		}
	}
}

2.二分法查找

import java.util.Arrays;

public class Test {

	public static int search(int[] array, int data) {
		Arrays.sort(array);// 将数组升序排列
		
		int low = 0;
		int high = array.length - 1;
		while (low <= high) {
			int middle = (low + high) / 2;
			// 搜索数据与中间元素比较确定在中间元素左边还是右边,进而不断缩小查找范围
			if (data > array[middle]) {//右边
				low = middle + 1;
			} else if (data < array[middle]) {//左边
				high = middle - 1;
			} else {
				return middle;
			}
		}
		return -1;
	}

	public static void main(String[] args) {
		int[] numbers = {5, 1, 7, 3, 2};
		int index = search(numbers, 5);
		if (index != -1) {
			System.out.println("数组中包含该数据");
		} else {
			System.out.println("数组中不包含该数据");
		}
	}
}

 

你可能感兴趣的:(Java入门)