Skip to content

Commit

Permalink
Merge pull request TheAlgorithms#1325 from mariaRoxana94/fix-error
Browse files Browse the repository at this point in the history
Fixed 8XCorrectness_Bugs + 10XBad_Practice_Bugs + 14XDodgy_Code_Bugs
  • Loading branch information
StepfenShawn authored May 28, 2020
2 parents c37257c + a5f42e2 commit 88c6ad9
Show file tree
Hide file tree
Showing 25 changed files with 293 additions and 238 deletions.
4 changes: 2 additions & 2 deletions Conversions/DecimalToBinary.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public static void main(String args[]) {
public static void conventionalConversion() {
int n, b = 0, c = 0, d;
Scanner input = new Scanner(System.in);
System.out.printf("Conventional conversion.\n\tEnter the decimal number: ");
System.out.printf("Conventional conversion.%n Enter the decimal number: ");
n = input.nextInt();
while (n != 0) {
d = n % 2;
Expand All @@ -46,7 +46,7 @@ public static void conventionalConversion() {
public static void bitwiseConversion() {
int n, b = 0, c = 0, d;
Scanner input = new Scanner(System.in);
System.out.printf("Bitwise conversion.\n\tEnter the decimal number: ");
System.out.printf("Bitwise conversion.%n Enter the decimal number: ");
n = input.nextInt();
while (n != 0) {
d = (n & 1);
Expand Down
8 changes: 4 additions & 4 deletions Conversions/OctalToHexadecimal.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class OctalToHexadecimal {
* @param s The Octal Number
* @return The Decimal number
*/
public static int OctToDec(String s) {
public static int octToDec(String s) {
int i = 0;
for (int j = 0; j < s.length(); j++) {
char num = s.charAt(j);
Expand All @@ -32,7 +32,7 @@ public static int OctToDec(String s) {
* @param d The Decimal Number
* @return The Hexadecimal number
*/
public static String DecimalToHex(int d) {
public static String decimalToHex(int d) {
String digits = "0123456789ABCDEF";
if (d <= 0)
return "0";
Expand All @@ -54,10 +54,10 @@ public static void main(String args[]) {
String oct = input.next();

// Pass the octal number to function and get converted deciaml form
int decimal = OctToDec(oct);
int decimal = octToDec(oct);

// Pass the decimla number to function and get converted Hex form of the number
String hex = DecimalToHex(decimal);
String hex = decimalToHex(decimal);
System.out.println("The Hexadecimal equivalant is: " + hex);
input.close();
}
Expand Down
4 changes: 2 additions & 2 deletions DataStructures/DynamicArray/DynamicArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void add(final E element) {
}

public void put(final int index, E element) {
Objects.checkIndex(index, this.size);
// Objects.checkIndex(index, this.size);

this.elements[index] = element;
}
Expand Down Expand Up @@ -79,7 +79,7 @@ private void fastRemove(final Object[] elements, final int index) {
}

private E getElement(final int index) {
Objects.checkIndex(index, this.size);
// Objects.checkIndex(index, this.size);
return (E) this.elements[index];
}

Expand Down
2 changes: 1 addition & 1 deletion DataStructures/Graphs/BellmanFord.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class Edge
* @param v End vertex
* @param c Weight
*/
Edge(int a,int b,int c)
public Edge(int a,int b,int c)
{
u=a;
v=b;
Expand Down
3 changes: 1 addition & 2 deletions DataStructures/Graphs/MatrixGraphs.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,7 @@ public boolean removeEdge(int from, int to) {
* @return returns a string describing this graph
*/
public String toString() {
String s = new String();
s = " ";
String s = " ";
for (int i = 0; i < this.numberOfVertices(); i++) {
s = s + String.valueOf(i) + " ";
}
Expand Down
18 changes: 16 additions & 2 deletions DataStructures/Heaps/HeapElement.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,21 @@ public String toString() {
* @return true if the keys on both elements are identical and the additional info objects
* are identical.
*/
public boolean equals(HeapElement otherHeapElement) {
return (this.key == otherHeapElement.key) && (this.additionalInfo.equals(otherHeapElement.additionalInfo));
@Override
public boolean equals(Object o) {
if (o != null) {
if (!(o instanceof HeapElement)) return false;
HeapElement otherHeapElement = (HeapElement) o;
return (this.key == otherHeapElement.key) && (this.additionalInfo.equals(otherHeapElement.additionalInfo));
}
return false;
}

@Override
public int hashCode() {
int result = 0;
result = 31*result + (int) key;
result = 31*result + (additionalInfo != null ? additionalInfo.hashCode() : 0);
return result;
}
}
8 changes: 4 additions & 4 deletions DataStructures/Heaps/MaxHeap.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ private void swap(int index1, int index2) {
// Toggle an element up to its right place as long as its key is lower than its parent's
private void toggleUp(int elementIndex) {
double key = maxHeap.get(elementIndex - 1).getKey();
while (getElementKey((int) Math.floor(elementIndex / 2)) < key) {
swap(elementIndex, (int) Math.floor(elementIndex / 2));
elementIndex = (int) Math.floor(elementIndex / 2);
while (getElementKey((int) Math.floor(elementIndex / 2.0)) < key) {
swap(elementIndex, (int) Math.floor(elementIndex / 2.0));
elementIndex = (int) Math.floor(elementIndex / 2.0);
}
}

Expand Down Expand Up @@ -101,7 +101,7 @@ public void deleteElement(int elementIndex) {
maxHeap.set(elementIndex - 1, getElement(maxHeap.size()));
maxHeap.remove(maxHeap.size());
// Shall the new element be moved up...
if (getElementKey(elementIndex) > getElementKey((int) Math.floor(elementIndex / 2))) toggleUp(elementIndex);
if (getElementKey(elementIndex) > getElementKey((int) Math.floor(elementIndex / 2.0))) toggleUp(elementIndex);
// ... or down ?
else if (((2 * elementIndex <= maxHeap.size()) && (getElementKey(elementIndex) < getElementKey(elementIndex * 2))) ||
((2 * elementIndex < maxHeap.size()) && (getElementKey(elementIndex) < getElementKey(elementIndex * 2))))
Expand Down
8 changes: 4 additions & 4 deletions DataStructures/Heaps/MinHeap.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ private void swap(int index1, int index2) {
// Toggle an element up to its right place as long as its key is lower than its parent's
private void toggleUp(int elementIndex) {
double key = minHeap.get(elementIndex - 1).getKey();
while (getElementKey((int) Math.floor(elementIndex / 2)) > key) {
swap(elementIndex, (int) Math.floor(elementIndex / 2));
elementIndex = (int) Math.floor(elementIndex / 2);
while (getElementKey((int) Math.floor(elementIndex / 2.0)) > key) {
swap(elementIndex, (int) Math.floor(elementIndex / 2.0));
elementIndex = (int) Math.floor(elementIndex / 2.0);
}
}

Expand Down Expand Up @@ -96,7 +96,7 @@ public void deleteElement(int elementIndex) {
minHeap.set(elementIndex - 1, getElement(minHeap.size()));
minHeap.remove(minHeap.size());
// Shall the new element be moved up...
if (getElementKey(elementIndex) < getElementKey((int) Math.floor(elementIndex / 2))) toggleUp(elementIndex);
if (getElementKey(elementIndex) < getElementKey((int)Math.floor(elementIndex / 2.0))) toggleUp(elementIndex);
// ... or down ?
else if (((2 * elementIndex <= minHeap.size()) && (getElementKey(elementIndex) > getElementKey(elementIndex * 2))) ||
((2 * elementIndex < minHeap.size()) && (getElementKey(elementIndex) > getElementKey(elementIndex * 2))))
Expand Down
2 changes: 1 addition & 1 deletion DataStructures/Lists/CircleLinkedList.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ private Node(E value, Node<E> next) {
//For better O.O design this should be private allows for better black box design
private int size;
//this will point to dummy node;
private Node<E> head;
private Node<E> head = null;

//constructer for class.. here we will make a dummy node for circly linked list implementation with reduced error catching as our list will never be empty;
public CircleLinkedList() {
Expand Down
12 changes: 9 additions & 3 deletions DataStructures/Lists/DoublyLinkedList.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,12 @@ public void insertTail(int x) {
public Link deleteHead() {
Link temp = head;
head = head.next; // oldHead <--> 2ndElement(head)
head.previous = null; // oldHead --> 2ndElement(head) nothing pointing at old head so will be removed
if (head == null)

if (head == null) {
tail = null;
} else {
head.previous = null; // oldHead --> 2ndElement(head) nothing pointing at old head so will be removed
}
return temp;
}

Expand All @@ -100,10 +103,13 @@ public Link deleteHead() {
public Link deleteTail() {
Link temp = tail;
tail = tail.previous; // 2ndLast(tail) <--> oldTail --> null
tail.next = null; // 2ndLast(tail) --> null

if (tail == null) {
head = null;
} else{
tail.next = null; // 2ndLast(tail) --> null
}

return temp;
}

Expand Down
4 changes: 2 additions & 2 deletions DataStructures/Stacks/NodeStack.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void push(Item item) {
} else {
newNs.setPrevious(NodeStack.head);
NodeStack.head.setNext(newNs);
NodeStack.head = newNs;
NodeStack.head.setHead(newNs);
}

NodeStack.setSize(NodeStack.getSize() + 1);
Expand All @@ -89,7 +89,7 @@ public Item pop() {

Item item = (Item) NodeStack.head.getData();

NodeStack.head = NodeStack.head.getPrevious();
NodeStack.head.setHead(NodeStack.head.getPrevious());
NodeStack.head.setNext(null);

NodeStack.setSize(NodeStack.getSize() - 1);
Expand Down
4 changes: 2 additions & 2 deletions DataStructures/Trees/LevelOrderTraversal.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public Node(int item) {
// Root of the Binary Tree
Node root;

public LevelOrderTraversal() {
root = null;
public LevelOrderTraversal( Node root) {
this.root = root;
}

/* function to print level order traversal of tree*/
Expand Down
4 changes: 1 addition & 3 deletions DataStructures/Trees/LevelOrderTraversalQueue.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@ public Node(int item) {
}
}

Node root;

/* Given a binary tree. Print its nodes in level order
using array for implementing queue */
void printLevelOrder() {
void printLevelOrder(Node root) {
Queue<Node> queue = new LinkedList<Node>();
queue.add(root);
while (!queue.isEmpty()) {
Expand Down
3 changes: 1 addition & 2 deletions DataStructures/Trees/ValidBSTOrNot.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ public Node(int item) {
}

//Root of the Binary Tree
Node root;

/* can give min and max value according to your code or
can write a function to find min and max value of tree. */

/* returns true if given search tree is binary
search tree (efficient version) */
boolean isBST() {
boolean isBST(Node root) {
return isBSTUtil(root, Integer.MIN_VALUE,
Integer.MAX_VALUE);
}
Expand Down
2 changes: 1 addition & 1 deletion DynamicProgramming/LongestIncreasingSubsequence.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public static void main(String[] args) {

private static int upperBound(int[] ar, int l, int r, int key) {
while (l < r - 1) {
int m = (l + r) / 2;
int m = (l + r) >>> 1;
if (ar[m] >= key)
r = m;
else
Expand Down
2 changes: 1 addition & 1 deletion DynamicProgramming/MatrixChainMultiplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void main(String[] args) {
count++;
}
for (Matrix m : mArray) {
System.out.format("A(%d) = %2d x %2d\n", m.count(), m.col(), m.row());
System.out.format("A(%d) = %2d x %2d%n", m.count(), m.col(), m.row());
}

size = mArray.size();
Expand Down
2 changes: 1 addition & 1 deletion Maths/GCD.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ public static void main(String[] args) {

// call gcd function (input array)
System.out.println(gcd(myIntArray)); // => 4
System.out.printf("gcd(40,24)=%d gcd(24,40)=%d\n", gcd(40, 24), gcd(24, 40)); // => 8
System.out.printf("gcd(40,24)=%d gcd(24,40)=%d%n", gcd(40, 24), gcd(24, 40)); // => 8
}
}
Loading

0 comments on commit 88c6ad9

Please sign in to comment.