算法实际上在Java中不需要精通,因为Java已经封装好了。
例如Java中提供了一个数组工具类:java.util.Arrays
常用的方法
①排序算法:sort()。package >com.bjpowernode.javase.array; import java.util.Arrays; public class ArraysTest01 { /* * 使用SUN佛南公司提供的数据工具类:java.util.Arrays * */ public static void main(String[] args) { int[] arr={2,3,4,56,47,1}; //工具类当中的方法大部分都是静态的。 Arrays.sort(arr); //遍历 for (int i = 0; i <arr.length ; i++) >{ System.out.print(arr[i]+","); } } }
②二分查找:binarySearch()。
package com.bjpowernode.javase.array; import java.util.Arrays; public class ArraysTest02 { public static void main(String[] args) { int[] arr={3,6,5,12,1,2,32,5,5}; //排序 Arrays.sort(arr); for (int i = 0; i <arr.length ; i++) { System.out.print(arr[i]+","); } System.out.println(); //二分查找 int key=32; int index=Arrays.binarySearch(arr,key); System.out.println(index==-1?"元素"+key+"不存在":"元素"+key+"的下标是:"+index); } }
(工具类是静态方法=>为了方便使用,不需要new对象,直接使用类名调用就行。)
- 常见的算法:
- 排序算法
- 冒泡排序算法
package >com.bjpowernode.javase.array; public class BubbleSort { public static void >main(String[] args) { //原始数据 int[] arr={3,2,7,6,8}; //temp用于交换 int temp; //使用冒泡排序算法对以上数组元素进行排序 /* 冒泡排序算法:每次循环结束后,都要找出最大的数据,放到参与比较的这堆数据的最右边。 原始数据:8,7,6,3,2 第一次循环(保证最大的数交换到最右边) 第一次比较:7,8,6,3,2(8和7比较) 第二次比较:7,6,8,3,2(8和6比较) 第三次比较:7,6,3,8,2(8和3比较) 第四次比较:7,6,3,2,8(8和2比较) 第二次循环(保证第二大的数交换到右边倒数第二的位置) 第一次比较:6,7,3,2,8(7和6比较) 第二次比较:6,3,7,2,8(7和3比较) 第三次比较:6,3,2,7,8(7和2比较) 第三次循环(保证第三大的数交换到右边倒数第三的位置) 第一次比较:3,6,2,7,8(6和3比较) 第二次比较:3,2,6,7,8(6和2比较) 第四次循环(保证第四大的数交换到右边倒数第四的位置) 第一次比较:2,3,6,7,8(3和2比较) */ for (int i = arr.length-1; i >0 ; i--) { for (int j = 0; j < i; j++) { if (arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for (int i = 0; i <arr.length ; i++) { System.out.print(arr[i]+","); } } }
- 选择排序算法
package >com.bjpowernode.javase.array; /* 选择排序: 每一次从这堆参与比较的数据当中找出最小值, 将其中最小值和最前面的数据交换. 选择排序比冒泡排序效率高,高在交换次数上 参与比较的数据:31625 第1次循环之后的结果:1 3625 参与比较的数据:3625 第2次循环之后的结果:12 635 参与比较的数据:365 第3次循环之后的结果:123 65 参与比较的数据:65 第4次循环之后的结果:1235 6 */ public class SelectSort { public static void main(String[] args) { //原始数据 int[] arr={3,1,6,2,5}; //temp用于交换 int temp; //用于指向最大数据的下表 int index; for (int i =0; i <arr.length-1 ; i++) { index=i; for (int j = i+1; j <arr.length ; j++) { if (arr[index]<arr[j]){ index=j; } } //交换位置 temp=arr[index]; arr[index]=arr[i]; arr[i]=temp; } //打印 for (int i = 0; i <arr.length ; i++) >{ System.out.print(arr[i]+","); } } }
- 查找算法
- 二分查找算法
package com.bjpowernode.javase.array; /* 数组的元素查找有两种方式: 第一种方式:一个一个挨着找,直到找到为止。 第二种方式:二分查找(算法),二分查找是基于排序的基础上的 10,11,12,13,14,15,16,17,18,19,20 通过二分法查找,找出18这个元素的下标: */ public class ArraySearch { public static void main(String[] args) { int[] array={10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; int number=15; int sign=selectArray(array,number); System.out.println((sign==-1)?"找不到数字"+number:"数字"+number+"的下标为"+sign); } private static int selectArray(int[] array,int number){ int min=0; int max=array.length-1; int middle=(min+max)/2; while (min<=max) { if (array[middle] >number) { max=middle-1; middle=(min+max)/2; }else if (array[middle]<number){ min=middle+1; middle=(min+max)/2; }else { return middle; } } return -1; } }
- 排序算法
网友评论