This is a java program to compare Binary Search and Linear Search algorithms. Following class provides the time required to search an element for both the algorithms
Here is the source code of the Java Program to Compare Binary and Sequential Search. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This the the java program to compare the sequential and binary search
import java.util.Random;
import java.util.Scanner;
public class Sequential_Binary_Compare
{
public static int N = 1000;
public static int[] sequence = new int[N];
public static boolean sequentialSearch(int[] sequence, int key)
{
for (int i = 0; i < sequence.length; i++)
if (sequence[i] == key)
return true;
return false;
}
public static boolean binarySearch(int[] sequence, int key)
{
int low = 0, high = sequence.length - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (key < sequence[mid])
high = mid - 1;
else if (key > sequence[mid])
low = mid + 1;
else
return true;
}
return false;
}
public static void QuickSort(int left, int right)
{
if (right - left <= 0)
return;
else
{
int pivot = sequence[right];
int partition = partitionIt(left, right, pivot);
QuickSort(left, partition - 1);
QuickSort(partition + 1, right);
}
}
public static int partitionIt(int left, int right, long pivot)
{
int leftPtr = left - 1;
int rightPtr = right;
while (true)
{
while (sequence[++leftPtr] < pivot)
;
while (rightPtr > 0 && sequence[--rightPtr] > pivot)
;
if (leftPtr >= rightPtr)
break;
else
swap(leftPtr, rightPtr);
}
swap(leftPtr, right);
return leftPtr;
}
public static void swap(int dex1, int dex2)
{
int temp = sequence[dex1];
sequence[dex1] = sequence[dex2];
sequence[dex2] = temp;
}
public static void main(String args[])
{
Random random = new Random();
for (int i = 0; i < N; i++)
sequence[i] = Math.abs(random.nextInt(100));
Scanner sc = new Scanner(System.in);
System.out.println("Enter the key to be searched: ");
int k = sc.nextInt();
System.out
.println("Time taken to search key using sequential search: ");
long startTime = System.nanoTime();
boolean result = sequentialSearch(sequence, k);
long endTime = System.nanoTime();
if (result == true)
System.out.println("Key found in " + (endTime - startTime)
+ " nanoseconds");
else
System.out.println("Key doesn't exist, execution time "
+ (endTime - startTime) + " nanoseconds");
System.out.println("Time taken to search key using binary search: ");
QuickSort(0, N - 1);
startTime = System.nanoTime();
result = sequentialSearch(sequence, k);
endTime = System.nanoTime();
if (result == true)
System.out.println("Key found in " + (endTime - startTime)
+ " nanoseconds");
else
System.out.println("Key doesn't exist, execution time "
+ (endTime - startTime) + " nanoseconds");
sc.close();
}
}
Output:
$ javac Sequential_Binary_Compare.java $ java Sequential_Binary_Compare Enter the key to be searched: (N=100) 85 Time taken to search key using sequential search: Key found in 14696 nanoseconds Time taken to search key using binary search: Key found in 6680 nanoseconds Enter the key to be searched: (N=1000) 562 Time taken to search key using sequential search: Key doesn't exist, execution time 44422 nanoseconds Time taken to search key using binary search: Key doesn't exist, execution time 43420 nanoseconds
Related posts:
Comparing Long Values in Java
Introduction to Spring Security Expressions
Java Program to Implement Levenshtein Distance Computing Algorithm
Spring JDBC
File Upload with Spring MVC
Java Program to Perform the Shaker Sort
Marker Interface trong Java
Java Program to Implement LinkedHashMap API
Java Program to implement Array Deque
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Spring Boot - Admin Server
RegEx for matching Date Pattern in Java
Finding the Differences Between Two Lists in Java
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Guide to @ConfigurationProperties in Spring Boot
Overview of the java.util.concurrent
Java Program to Solve any Linear Equation in One Variable
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Implement ArrayList API
Inheritance with Jackson
Spring Boot - Cloud Configuration Client
How to Round a Number to N Decimal Places in Java
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Tránh lỗi NullPointerException trong Java như thế nào?
A Guide to TreeMap in Java
An Intro to Spring Cloud Security
Java Program to Implement Quick Sort with Given Complexity Constraint
Anonymous Classes in Java
OAuth2 Remember Me with Refresh Token
Apache Commons Collections SetUtils
Java Collections Interview Questions
Working with Kotlin and JPA