数组相关简单算法:冒泡,排序和查找

一:冒泡排序

代码实现:

public static void bubboleSort(int[] arr) {
		for (int x = 0; x < arr.length - 1; x++) {
			for (int y = 0; y < arr.length - 1 - x; y++) {
				if (arr[y] > arr[y + 1]) {
					int temp = arr[y];
					arr[y] = arr[y + 1];
					arr[y + 1] = temp;
				}
			}
		}
	}

二:选择排序



代码实现:

public static void selectSort(int[] arr) {
		for (int x = 0; x < arr.length - 1; x++) {
			for (int y = x + 1; y < arr.length; y++) {
				if (arr[x] > arr[y]) {
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}
			}
		}
	}

三,二分查找

折半查找(二分查找) :数组一定是有序
 分析:
  A:定义最小索引和最大索引
  B:计算中间索引
  C:中间索引对应的元素和需要查找的元素比较
  相等,直接返回中间索引
  不相等:
  大了,左边找
  max = mid -1 ;
  小了,右边找
  min = mid + 1 ;
  E:重新计算中间索引 ,回到B继续查找
 


代码实现

public static int search(int[] arr,int value) {
		//1定义数组中的最小索引和最大索引
		int min = 0 ;
		int max = arr.length -1 ;
		
		//2 计算出中间索引
		int mid = (max+min)/2 ;
		
		//3)拿中间索引对应的元素和需要查找的元素进行比较
		//如果相等,返回
		while(arr[mid]!=value) {
			//不相等
			if(arr[mid] >value) {
				 max = mid -1 ;
			}else {
				 min = mid + 1 ;
			}
			
			//如果这value在数组中找不到,找不到返回-1
			if(min>max) {
				return -1 ;
			}
			
			//重新计算出中间索引
			mid = (max+min)/2 ;
		}
		
		
		return mid ;
		
		
	}
	

猜你喜欢

转载自blog.csdn.net/cat18292575042/article/details/80084280