Java中冒泡排序和二分查找

来源:互联网 发布:ipad 电子相册软件 编辑:程序博客网 时间:2024/06/06 12:57

一 冒泡排序

冒泡排序:相邻的两个元素比较,符合条件交换位置

示例:

//所谓排序就是将一个个最大元素放在对应的位置上。int[] arr = {2,5,3,6,1,9};//j是控制轮数,每一轮都可以找出一个最大值。for(int j = 0;j<arr.length-1;j++){ //相邻的两个元素比较 for(int i = 0;i<arr.lenght-1-j;i++) {   if(arr[i]>arr[i+1])   {     int temp = arr[i];     arr[i] = arr[i+1];     arr[i+1] = temp;   } }}

二 折半查找法(二分查找法)

二分查找法使用的前提是数据必须是有序的。

折半查找法的思路 :定义三个变量记录查找范围内的最大、最小、中间索引,每次都是使用中间索引对应的值与要查找目标进行对比,如果不是符合的目标就缩小查找的范围。

示例:

public int halfSearch(int[] arr,int target){  int max = arr.lenght-1; //最大的索引  int min = 0; //最小的索引  int mid = (max+min)/2; //中间的索引  while(true)  {    //目标值和中间值比较 大于中间值 说明目标值在中间值的右边  最小索引要更改到中间值索引的右边下一个    if(target>arr[mid])    {      min = mid+1;    }    else if(target<arr[mid])    {    //目标值和中间值比较,小于中间值,说明目标值在中间值的左边  最大索引要更改到中间值索引的左边下一个      max = mid-1;    }    else    {      return mid;    }    //每查完一次 要重新计算中间值    mid = (min+max)/2;    //目标值不在数组中    if(max<min)    {     returen -1;    }  }}