- Simple Algorithms
- Fastman Problem
- Binary Tree
- Stream Merger
- Is Pangram
- Get Month Name
- Matrix Diagonal Difference
- Grading Students
- Apple and Orange
- Kangaroo
- GitHub Repository
Binary Search
Is a search algorithm that finds the position of a target value within a sorted array.
BinarySearch.java
public class BinarySearch{
int logarithmic(Integer[] data, int key) {
int startIndex = 0;
int endIndex = data.length - 1;
while (startIndex < endIndex) {
int midIndex = (endIndex - startIndex / 2) + startIndex;
int midValue = data[midIndex];
if (key > midValue) {
startIndex = midIndex++;
} else if (key < midValue) {
endIndex = midIndex - 1;
} else {
return midIndex;
}
}
return -1;
}
public static void main(String[] args){
BinarySearch binarySearch = new BinarySearch();
Integer[] myData = {1,2,3,4,5,6,7,8,9,10};
System.out.println("value: " + binarySearch.logarithmic(myData,5));
}
}
QuickSort
Quicksort (sometimes called partition-exchange sort) is an efficient sorting algorithm, serving as a systematic method for placing the elements of an array in order.
QuickSort.java
public class QuickSort<t extends Comparable<Integer>> {
public Integer[] sort(Integer[] array) {
return quicksort(array, 0, array.length - 1);
}
private Integer[] quicksort(Integer[] array, int lo, int hi) {
if (hi > lo) {
int partitionPivotIndex = (int) (Math.random() * (hi - lo) + lo);
int newPivotIndex = partition(array, lo, hi, partitionPivotIndex);
quicksort(array, lo, newPivotIndex - 1);
quicksort(array, newPivotIndex + 1, hi);
}
return (Integer[]) array;
}
private int partition(Integer[] array, int lo, int hi, int pivotIndex) {
Integer pivotValue = array[pivotIndex];
swap(array, pivotIndex, hi);
int index = lo;
for (int i = lo; i < hi; i++) {
if ((array[i]).compareTo(pivotValue) <= 0) {
swap(array, i, index);
index++;
}
}
swap(array, hi, index);
return index;
}
private void swap(Integer[] array, int i, int j) {
Integer temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
Sorter.java
public class Sorter{
public Integer[] sort(Integer[] data) {
QuickSort<Integer> sorter = new QuickSort<Integer>();
return sorter.sort(data);
}
public static void main(String[] args){
Integer myData[] = {7,3,5,1,8,4,2,0,6,9};
Integer[] result = new Sorter().sort(myData);
for(Integer integer : result){
System.out.println("number: " + integer);
}
}
}
To download the code:
git clone https://github.com/josdem/algorithms-workshop.git