ava中有多种查找方法和排序方法,下面以冒泡排序,选择排序为例为大家介绍排序方法,以二分法查找,为大家演示一下查找的基本思路. 1.冒泡排序 原理:相邻元素两两比较,大的往后放。第一次完毕,最大值在最大索引处。 具体代码实例如下: public class BubbleSortDemo { public static void main(String[] args) { //定义变量,记录要被排序的数组 int[] arr = {13,456,79,7,654,33,45}; //外层循环代表轮数,代表正在比较第几大的数 for (int i = 0; i < arr.length-1; i++) { //比较这一个数出来,需要比较多少次 for (int j = 0; j < arr.length-1-i; j++) { //如果按照从小到大的顺序,则需要前边的数比后边的数小 if(arr[j]>arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr + " "); } } } 2.选择排序 原理: 从0索引元素开始,依次和后面的所有元素比较,小的往0索引处放。第一次完毕后,最小值在最小索引处。 具体代码实例如下: public class SelectSortDemo { public static void main(String[] args) { //定义变量,记录要被排序的数组 int[] arr = {13,456,79,7,654,33,45}; //外层循环代表轮数,代表正在比较第几小的数 for(int i=0; i //比较这一个数出来,需要比较多少次 for(int j=i+1; j //如果按照从小到大的顺序,则需要前边的数比后边的数小 if(arr>arr[j]){ int temp = arr; arr = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr + " "); } } } 3.二分法查找 前提:数组必须是排序的。 原理:每次都从中间开始找,如果比中间数据小,就在左边找, 如果比中间数据大,就在右边找,如果相 等,就返回中间的索引值。 具体代码实例如下: public static int getIndex(int[] arr,int value) { int start = 0; int end = arr.length-1; int mid = (start+end)/2; while(arr[mid]!=value){ if(value>arr[mid]) { start = mid + 1; }else if(value end = mid - 1; } if(start > end) { return -1; } mid = (start+end)/2; } return mid; }
|