package linearsearch; public class LinearSearch { public static void main(String[] args) { int[] data = new int[]{24,18,12,9,16,66,32,4}; int target = 16; int index = LinearSearch.lsearch(data,target); System.out.println(index); } public static int lsearch(int[] data,int target){ // 查找到指定的数字 for(int i=0;i< data.length;i++){ int temp = data[i]; if(temp == target){ return i; } } return -1; } }
在动态型数据源中进行线性查找
package linearsearch; public class LinearSearch{ public static void main(String[] args) { Integer[] data = new Integer[]{24,18,12,9,16,66,32,4}; Integer target = 16; int index = LinearSearch.lsearch(data,target); System.out.println(index); } public staticint lsearch(E[] data,E target){ // 查找到指定的数字 for(int i=0;i< data.length;i++){ // 判断两个类对象相等时 应该使用equal // 判断值相等使用 == (类对象使用只会比较引用地址) if(data[i].equals(target)){ return i; } } return -1; } }
测试算法性能 1.创建一个数组生成器
package linearsearch; public class ArrayGenerator { private ArrayGenerator() { } public static Integer[] generateOrderedAarray(int n){ Integer[] arr = new Integer[n]; for(int i=0 ; i
2.第一次测试package linearsearch; public class LinearSearch{ public static void main(String[] args) { int index = LinearSearch.lsearch(student,sTest); System.out.println(index);*/ Integer n = 10000000; Integer[] data = ArrayGenerator.generateOrderedAarray(n); long startTime = System.nanoTime(); LinearSearch.lsearch(data,n); long endTime = System.nanoTime(); double time = (endTime - startTime) / 1000000000.0; System.out.println(time+"s "); } public staticint lsearch(E[] data,E target){ // 查找到指定的数字 for(int i=0;i< data.length;i++){ // 判断两个类对象相等时 应该使用equal // 判断值相等使用 == (类对象使用只会比较引用地址) if(data[i].equals(target)){ return i; } } return -1; } } 0.0323209s
3.第二次测试package linearsearch; public class LinearSearch{ public static void main(String[] args) { Integer n = 10000000; Integer[] data = ArrayGenerator.generateOrderedAarray(n); long startTime = System.nanoTime(); for(int k = 0;k<100;k++){ LinearSearch.lsearch(data,n); } long endTime = System.nanoTime(); double time = (endTime - startTime) / 1000000000.0; System.out.println("n="+n+" 100 runs : "+time+"s "); } public staticint lsearch(E[] data,E target){ // 查找到指定的数字 for(int i=0;i< data.length;i++){ // 判断两个类对象相等时 应该使用equal // 判断值相等使用 == (类对象使用只会比较引用地址) if(data[i].equals(target)){ return i; } } return -1; } } n=10000000 100 runs : 2.5389971s
4.第三次测试package linearsearch; public class LinearSearch{ public static void main(String[] args) { int[] dataSize = {1000000,10000000}; for(int n:dataSize){ Integer[] data = ArrayGenerator.generateOrderedAarray(n); long startTime = System.nanoTime(); for(int k = 0;k<100;k++){ LinearSearch.lsearch(data,n); } long endTime = System.nanoTime(); double time = (endTime - startTime) / 1000000000.0; System.out.println("n="+n+" 100 runs : "+time+"s "); } } public staticint lsearch(E[] data,E target){ // 查找到指定的数字 for(int i=0;i< data.length;i++){ // 判断两个类对象相等时 应该使用equal // 判断值相等使用 == (类对象使用只会比较引用地址) if(data[i].equals(target)){ return i; } } return -1; } } n=1000000 100 runs : 0.1400557s n=10000000 100 runs : 2.4041455s欢迎分享,转载请注明来源:内存溢出
评论列表(0条)