Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
7.16(執(zhí)行時(shí)間)編寫程序,隨機(jī)產(chǎn)生一個(gè)包含100 000個(gè)整數(shù)的數(shù)組和一個(gè)關(guān)鍵字。估算調(diào)用程序清單7-6中的linearSearch方法的執(zhí)行時(shí)間
- 題目
- 題目描述
- 程序清單7-6的linearSearch
- 程序清單7-7BinarySearch
- 破題
- 代碼
- 運(yùn)行實(shí)例
題目
題目描述
7.16(執(zhí)行時(shí)間)編寫程序,隨機(jī)產(chǎn)生一個(gè)包含100 000個(gè)整數(shù)的數(shù)組和一個(gè)關(guān)鍵字。估算調(diào)用程序清單7-6中的linearSearch方法的執(zhí)行時(shí)間。對(duì)該數(shù)組進(jìn)行排序,然后估算調(diào)用程序清單7-7中的binarySearch方法的執(zhí)行時(shí)間。可以使用下面的代碼模板獲取執(zhí)行時(shí)間
long startTime = System.nanoTime(); perform the task; // 在這里調(diào)用方法 long endTime = System.nanoTime(); long executionTime = endTime - startTime;程序清單7-6的linearSearch
public class LinearSearch{public static int linearSearch(int[] list, int key){for (int i = 0 ; i < list.length; i++){if (key == list[i])return i;}return -1;} }程序清單7-7BinarySearch
public class BinarySearch{ public static int binarySearch(int[] list, int key){int low = 0;int high = list.length - 1;while(high >= low){int mid = (low + high) / 2;if (key < list[mid])high = mid - 1;else if (key == list[mid])return mid;elselow = mid + 1;}return -low-1;} }破題
代碼
import java.util.Arrays;public class Test7_16 {public static void main(String[] args) {//1. 主方法:隨機(jī)生成100 000個(gè)整數(shù),存入數(shù)組中int[] list = new int[100000];for (int i = 0; i < 100000; i++){list[i] = (int)(Math.random() * 100000);}//2. 主方法:從這100 000個(gè)整數(shù)中隨機(jī)生成一個(gè)key(可以生成下標(biāo),再?gòu)臄?shù)組中抽出)int key_index = (int) (Math.random() * 100000);int key = list[key_index];//3. 主方法:調(diào)用方法linearSearch并估算時(shí)間(,輸出)long startTime0 = System.nanoTime();linearSearch(list, key); // 4.long endTime0 = System.nanoTime();long executionTime0 = endTime0 - startTime0;System.out.println(executionTime0);//5. 主方法: 對(duì)數(shù)組進(jìn)行排序Arrays.sort(list);//6. 主方法:調(diào)用binarySearch方法并估算時(shí)間long startTime1 = System.nanoTime();binarySearch(list, key);long endTime1 = System.nanoTime();long executionTime1 = endTime1 - startTime1;System.out.println(executionTime1);}// 線性查找法public static int linearSearch(int[] list, int key){for (int i = 0 ; i < list.length; i++){if (key == list[i])return i;}return -1;}// 二分查找法public static int binarySearch(int[] list, int key){int low = 0;int high = list.length - 1;while(high >= low){int mid = (low + high) / 2;if (key < list[mid])high = mid - 1;else if (key == list[mid])return mid;elselow = mid + 1;}return -low-1;} }運(yùn)行實(shí)例
213333 12337總結(jié)
以上是生活随笔為你收集整理的Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java黑皮书课后题第7章:7.15(消
- 下一篇: Java黑皮书课后题第7章:**7.17