Restructured the repo

This commit is contained in:
varunu28 2018-11-13 09:15:47 -08:00
parent fdc887ea6f
commit 819b7fd3da
30 changed files with 59 additions and 222 deletions

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="data_structures/" kind="src" path=""/>
<classpathentry kind="src" path="data_structures"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>

4
.gitignore vendored
View File

@ -1 +1,5 @@
/bin/
.idea/*
.classpath*
.project*
*.iml

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Java</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Arrays;
import java.util.Random;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Arrays;
import java.util.Random;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Arrays;
import java.util.Random;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Arrays;
import java.util.Random;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Random;
import java.util.stream.Stream;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Scanner;

View File

@ -1,4 +1,4 @@
package search;
package Searches;
/**
* The common interface of most searching algorithms

View File

@ -1,4 +1,4 @@
package search;
package Searches;
import java.util.Arrays;

View File

@ -1,137 +0,0 @@
/**
* Given n rectangular buildings in a 2-dimensional city, computes the skyline of these buildings,
* eliminating hidden lines. The main task is to view buildings from a side and remove all sections
* that are not visible.
* Source for explanation: https://www.geeksforgeeks.org/the-skyline-problem-using-divide-and-conquer-algorithm/
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class SkylineProblem {
Building[] building;
int count;
public void run() {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
this.building = new Building[num];
for(int i = 0; i < num; i++) {
String input = sc.next();
String[] data = input.split(",");
this.add(Integer.parseInt(data[0]), Integer.parseInt(data[1]), Integer.parseInt(data[2]));
}
this.print(this.findSkyline(0, num - 1));
sc.close();
}
public void add(int left, int height, int right) {
building[count++] = new Building(left, height, right);
}
public void print(ArrayList<Skyline> skyline) {
Iterator<Skyline> it = skyline.iterator();
while(it.hasNext()) {
Skyline temp = it.next();
System.out.print(temp.coordinates + "," + temp.height);
if(it.hasNext()) {
System.out.print(",");
}
}
}
public ArrayList<Skyline> findSkyline(int start, int end) {
if(start == end) {
ArrayList<Skyline> list = new ArrayList<>();
list.add(new Skyline(building[start].left, building[start].height));
list.add(new Skyline(building[end].right, 0));
return list;
}
int mid = (start + end) / 2;
ArrayList<Skyline> sky1 = this.findSkyline(start, mid);
ArrayList<Skyline> sky2 = this.findSkyline(mid + 1, end);
return this.mergeSkyline(sky1, sky2);
}
public ArrayList<Skyline> mergeSkyline(ArrayList<Skyline> sky1, ArrayList<Skyline> sky2) {
int currentH1 = 0, currentH2 = 0;
ArrayList<Skyline> skyline = new ArrayList<>();
int maxH = 0;
while(!sky1.isEmpty() && !sky2.isEmpty()) {
if(sky1.get(0).coordinates < sky2.get(0).coordinates) {
int currentX = sky1.get(0).coordinates;
currentH1 = sky1.get(0).height;
if(currentH1 < currentH2) {
sky1.remove(0);
if(maxH != currentH2) skyline.add(new Skyline(currentX, currentH2));
} else {
maxH = currentH1;
sky1.remove(0);
skyline.add(new Skyline(currentX, currentH1));
}
} else {
int currentX = sky2.get(0).coordinates;
currentH2 = sky2.get(0).height;
if(currentH2 < currentH1) {
sky2.remove(0);
if(maxH != currentH1) skyline.add(new Skyline(currentX, currentH1));
} else {
maxH = currentH2;
sky2.remove(0);
skyline.add(new Skyline(currentX, currentH2));
}
}
}
while(!sky1.isEmpty()) {
skyline.add(sky1.get(0));
sky1.remove(0);
}
while(!sky2.isEmpty()) {
skyline.add(sky2.get(0));
sky2.remove(0);
}
return skyline;
}
public class Skyline {
public int coordinates;
public int height;
public Skyline(int coordinates, int height) {
this.coordinates = coordinates;
this.height = height;
}
}
public class Building {
public int left;
public int height;
public int right;
public Building(int left, int height, int right) {
this.left = left;
this.height = height;
this.right = right;
}
}
public static void main(String[] args) {
SkylineProblem skylineProblem = new SkylineProblem();
skylineProblem.run();
}
}

View File

@ -1,7 +1,7 @@
package sort;
package Sorts;
import static sort.SortUtils.less;
import static sort.SortUtils.print;
import static Sorts.SortUtils.less;
import static Sorts.SortUtils.print;
/**
*

View File

@ -1,9 +1,7 @@
package sort;
package Sorts;
import java.util.Random;
import static sort.SortUtils.*;
/**
*
@ -19,7 +17,7 @@ public class BogoSort implements SortAlgorithm {
private static <T extends Comparable<T>> boolean isSorted(T array[]){
for(int i = 0; i<array.length - 1; i++){
if(less(array[i + 1], array[i])) return false;
if(SortUtils.less(array[i + 1], array[i])) return false;
}
return true;
}
@ -30,7 +28,7 @@ public class BogoSort implements SortAlgorithm {
for (int i = 0; i < array.length; i++) {
int randomIndex = i + random.nextInt(length - i);
swap(array, randomIndex, i);
SortUtils.swap(array, randomIndex, i);
}
}
@ -49,11 +47,11 @@ public class BogoSort implements SortAlgorithm {
BogoSort bogoSort = new BogoSort();
// print a sorted array
print(bogoSort.sort(integers));
SortUtils.print(bogoSort.sort(integers));
// String Input
String[] strings = {"c", "a", "e", "b","d"};
print(bogoSort.sort(strings));
SortUtils.print(bogoSort.sort(strings));
}
}

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**
*

View File

@ -1,6 +1,4 @@
package sort;
import static sort.SortUtils.*;
package Sorts;
/**
*
@ -29,8 +27,8 @@ class CocktailShakerSort implements SortAlgorithm {
// front
swappedRight = 0;
for (int i = left; i < right; i++) {
if (less(array[i + 1], array[i])) {
swap(array, i, i + 1);
if (SortUtils.less(array[i + 1], array[i])) {
SortUtils.swap(array, i, i + 1);
swappedRight = i;
}
}
@ -38,8 +36,8 @@ class CocktailShakerSort implements SortAlgorithm {
right = swappedRight;
swappedLeft = length - 1;
for (int j = right; j > left; j--) {
if (less(array[j], array[j - 1])) {
swap(array, j - 1, j);
if (SortUtils.less(array[j], array[j - 1])) {
SortUtils.swap(array, j - 1, j);
swappedLeft = j;
}
}
@ -56,11 +54,11 @@ class CocktailShakerSort implements SortAlgorithm {
CocktailShakerSort shakerSort = new CocktailShakerSort();
// Output => 1 4 6 9 12 23 54 78 231
print(shakerSort.sort(integers));
SortUtils.print(shakerSort.sort(integers));
// String Input
String[] strings = { "c", "a", "e", "b", "d" };
print(shakerSort.sort(strings));
SortUtils.print(shakerSort.sort(strings));
}

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**

View File

@ -1,4 +1,4 @@
package sort;
package Sorts;
import java.util.*;
import java.util.stream.IntStream;
@ -6,7 +6,7 @@ import java.util.stream.Stream;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static sort.SortUtils.print;
import static Sorts.SortUtils.print;
/**
*

View File

@ -1,7 +1,7 @@
package sort;
package Sorts;
import static sort.SortUtils.less;
import static sort.SortUtils.print;
import static Sorts.SortUtils.less;
import static Sorts.SortUtils.print;
/**
* @author Podshivalov Nikita (https://github.com/nikitap492)

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**
* Implementation of gnome sort

View File

@ -1,10 +1,10 @@
package sort;
package Sorts;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**
* Heap Sort Algorithm

View File

@ -1,7 +1,7 @@
package sort;
package Sorts;
import static sort.SortUtils.less;
import static sort.SortUtils.print;
import static Sorts.SortUtils.less;
import static Sorts.SortUtils.print;
/**
*

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.print;
import static Sorts.SortUtils.print;
/**
* This method implements the Generic Merge Sort

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**
* Implementation of gnome sort

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**
*

View File

@ -1,4 +1,4 @@
package sort;
package Sorts;
import java.util.Arrays;

View File

@ -1,6 +1,4 @@
package sort;
import static sort.SortUtils.*;
package Sorts;
/**
*
@ -27,14 +25,14 @@ public class SelectionSort implements SortAlgorithm {
int min = i;
for (int j = i +1 ; j < n; j++) {
if (less(arr[j], arr[min])) {
if (SortUtils.less(arr[j], arr[min])) {
min = j;
}
}
// Swapping if index of min is changed
if (min != i) {
swap(arr, i , min);
SortUtils.swap(arr, i , min);
}
}
@ -51,13 +49,13 @@ public class SelectionSort implements SortAlgorithm {
Integer[] sorted = selectionSort.sort(arr);
// Output => 1 4 6 9 12 23 54 78 231
print(sorted);
SortUtils.print(sorted);
// String Input
String[] strings = {"c", "a", "e", "b","d"};
String[] sortedStrings = selectionSort.sort(strings);
//Output => a b c d e
print(sortedStrings);
SortUtils.print(sortedStrings);
}
}

View File

@ -1,6 +1,6 @@
package sort;
package Sorts;
import static sort.SortUtils.*;
import static Sorts.SortUtils.*;
/**

View File

@ -1,4 +1,4 @@
package sort;
package Sorts;
import java.util.Arrays;
import java.util.List;

View File

@ -1,4 +1,4 @@
package sort;
package Sorts;
import java.util.Arrays;
import java.util.List;