java基础知识——排序算法

tech2023-09-24  94

目录

 

冒泡排序算法

选择排序算法

二分(折半)查找算法


冒泡排序算法

图示如下:

代码实现:

/** * 冒泡排序 */ public class Test01 { public static void main(String[] args) { int [] data = {77,55,66,33,44,11}; //由小到大 //从前向后两两比较,如果前面的数大于后面的数就交换 //对于n个数的数组来说, 需要比较n-1轮 for (int x = 0; x < data.length - 1; x++) { for (int i = 0; i < data.length - 1 - x; i++) { if( data[i] > data[i+1]){ int t = data[i]; data[i] = data[i+1]; data[i+1] = t; } } } System.out.println(Test02.toString(data)); } }

选择排序算法

图示如下:

代码如下:

/** * 选择排序 */ public class Test02 { public static void main(String[] args) { int [] data = {77,55,66,33,44,11}; //由小到大 //从当前数中选择最小的交换到前面 //对于n个数的数组来说, 需要选择n-1轮 for (int x = 0; x < data.length - 1; x++) { int min = x; //保存当前轮次最小元素的下标 for( int i = min + 1 ; i < data.length; i++ ){ if ( data[i] < data[min]){ min = i; } } //把data[x] 与 data[min]交换 if( x != min ){ int t = data[x]; data[x] = data[min]; data[min] = t; } } System.out.println(exec.Test02.toString(data)); } }

二分(折半)查找算法

二分查找的前提是数组已经是从小到大排序

代码如下:

//定义方法从int [] array数组中采用二分查找算法返回key元素在数组中的索引值,如果不存在该元素返回-1 public static int binarySearch( int [] array, int key){ int begin = 0 ; //查找范围的起始位置 int end = array.length - 1 ; //查找范围的结束位置 int mid = ( begin + end ) / 2; //中间位置 //当起始位置小于等于结束 位置时就继续查找 while ( begin <= end ){ if( array[mid] == key ){ return mid; //中间元素就是要查找的元素, 返回下标 }else if ( array[mid] > key ){ //中间元素比要查找的元素大, 说明在左一半, 调整查找范围的结束位置 end = mid - 1; mid = ( begin + end ) / 2; //重新计算mid }else { //中间元素比要查找的元素小, 说明在右一半, 调整范围的起始索引值 begin = mid + 1 ; mid = ( begin + end ) / 2; //重新计算mid } } return - 1; //循环结束,即出现了起始位置大于结束位置的情况,说明元素不存在 }

 

最新回复(0)