kruti-working-branch #14

Closed
kruti wants to merge 15 commits from kruti/Princeton1:kruti-working-branch into main
4 changed files with 40 additions and 5 deletions
Showing only changes of commit c425ddb53e - Show all commits

View File

@ -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

View File

@ -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;
}
}
}
}

View File

@ -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);
}
}
}

View File

@ -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");
}