kruti-working-branch #14
@ -6,6 +6,9 @@ public abstract class AbstractCustomSorts<E> {
|
||||
|
||||
// TODO: Implement this method
|
||||
public void exch(E[] arr, int j, int i) {
|
||||
E temp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = temp;
|
||||
}
|
||||
|
||||
// TODO: Implement this method
|
||||
|
@ -3,7 +3,13 @@ package com.hithomelabs.princeton1.module5;
|
||||
public class Insertion<E> extends AbstractCustomSorts<E> {
|
||||
@Override
|
||||
public void sort(E[] arr) {
|
||||
|
||||
for(int i=1; i<arr.length; i++){
|
||||
int k = i;
|
||||
for(int j=i-1; j>=0 && less((Comparable<E>) arr[k], arr[j]); j--){
|
||||
exch(arr, k, j);
|
||||
k = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,14 @@ package com.hithomelabs.princeton1.module5;
|
||||
public class Selection<E> extends AbstractCustomSorts<E>{
|
||||
@Override
|
||||
public void sort(E[] arr) {
|
||||
|
||||
for (int i = 0; i < arr.length; i++) {
|
||||
int minIndex = i;
|
||||
for(int j = i+1; j < arr.length; j++){
|
||||
if(less((Comparable<E>) arr[j], arr[minIndex]))
|
||||
minIndex = j;
|
||||
}
|
||||
exch(arr, i, minIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,10 +24,29 @@ public class Shell<E> extends AbstractCustomSorts<E> {
|
||||
*/
|
||||
@Override
|
||||
public void sort(E[] arr) {
|
||||
MetaData metaData = new MetaData();
|
||||
for(int i=arr.length/10; i>=0; i--){
|
||||
hsort(arr, 3*i+1, metaData);
|
||||
}
|
||||
System.out.println("Array sorted (shell sort) with " + metaData.compares + " compares and " + metaData.swaps + " swaps");
|
||||
}
|
||||
|
||||
private int hsort(E[] arr, int h, MetaData metadata) {
|
||||
return 0;
|
||||
private void hsort(E[] arr, int h, MetaData metadata) {
|
||||
for(int i=0; i<arr.length; i=i+h){
|
||||
int k = i;
|
||||
for(int j=i-h; j>=0; j=j-h){
|
||||
metadata.compares++;
|
||||
if(less((Comparable<E>) arr[k], arr[j])){
|
||||
exch(arr, k, j);
|
||||
k = j;
|
||||
metadata.swaps++;
|
||||
}
|
||||
else{
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
! sample implementation of insertion sort as h-sort of h = 1
|
||||
@ -36,7 +55,7 @@ public class Shell<E> extends AbstractCustomSorts<E> {
|
||||
public void insertionSort(E[] arr){
|
||||
MetaData metaData = new MetaData();
|
||||
int h = 1;
|
||||
h = hsort(arr, h, metaData);
|
||||
hsort(arr, h, metaData);
|
||||
System.out.println("Array sorted (insertion sort) with " + metaData.compares + " compares and " + metaData.swaps + " swaps");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user