forked from Hithomelabs/Princeton1
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>
47 lines
1.2 KiB
Java
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";
|
|
}
|
|
}
|
|
|