Princeton1/module5/src/main/java/com/hithomelabs/princeton1/module5/Insertion.java
hitanshu310 8c47ac248c Adding benchmarking code (#17)
Reviewed-on: Hithomelabs/Princeton1#17
Reviewed-by: kruti <krutis0201@gmail.com>
Co-authored-by: hitanshu310 <hitanshu98@gmail.com>
Co-committed-by: hitanshu310 <hitanshu98@gmail.com>
2025-02-19 19:53:59 +00:00

47 lines
1.2 KiB
Java

package com.hithomelabs.princeton1.module5;
import java.util.Comparator;
public class Insertion<E> implements MeasurableSort<E>, MeasurableHelper{
public void sort(E[] arr) {
coreSortLogic(arr, null, null);
}
private void coreSortLogic(E[] arr, Comparator<E> cmp, SortingMetaData metaData) {
if (arr == null) return;
else {
int N = arr.length;
// * * swap arr[i] with each element greater to it's left
for (int i = 1; i < N; i++) {
int j = i;
while (j >= 1 && MeasurableHelper.less(arr[j], arr[j - 1], cmp, metaData)) {
MeasurableHelper.exch(arr, j, j - 1, metaData);
j = j - 1;
}
}
}
}
@Override
public void sort(E[] arr, Comparator<E> cmp, SortingMetaData metaData) {
if (metaData != null)
metaData.startTime();
coreSortLogic(arr, cmp, metaData);
if (metaData != null)
metaData.endTime();
}
@Override
public void sort(E[] arr, Comparator<E> cmp) {
coreSortLogic(arr, cmp, null);
}
@Override
public String toString() {
return "Insertion Sort";
}
}