Giter Site home page Giter Site logo

rodrigoalvesvieira / algorithms Goto Github PK

View Code? Open in Web Editor NEW
8.0 7.0 1.0 8.64 MB

Implementations of data structures & algorithms in Java for the Algorithms and Data Structures (IF672) discipline at CIn/UFPE

Home Page: http://moreno.cin.ufpe.br/~if672cc

C++ 0.63% JavaScript 0.09% Java 99.28%
algorithms ufpe sorting data-structure graph-algorithms graph-theory

algorithms's Introduction

Algorithms & Data Structures

Implementations of data structures, sorting and search algorithms in vanilla Java for the Algorithms and Data Structures (IF672) discipline at CIn/UFPE

Data Structure Status
Singly Linked List Implemented
Doubly Linked List Implemented
Dynamic Array Implemented
Queue Implemented
Stack Implemented
Min Heap (binary) Implemented
Max Heap (binary) Implemented
Binary Search Tree Implemented
Adelson-Velskii and Landis' (AVL) Tree Implemented
Disjoint Set (union-find) Implemented
Hash Table Implemented
Bloom Filter Implemented
Segment Tree Implemented
Fenwick Tree (BIT) Pending
Suffix Array Pending
Suffix Tree Pending

Sorting

Algorithm Stability Status Remarks
Insertion sort Stable Implemented Use for small N or partially ordered
Bubble sort Stable Implemented
Selection sort Not stable Implemented N exchanges
Shellsort Not stable Implemented
Quicksort Not stable Implemented Fastest in practice. Mostly N log N
Mergesort Stable Implemented N log N guarantee. Big constant factor
Heapsort (w/ Min Heap) Not stable Implemented

Searching

Algorithm Status
Binary Search Implemented

Graph

Algorithm Status
Breadth-First Search Implemented
Depth-First Search Pending
Dijkstra's algorithm Pending
Kruskal MSP Pending
Prim MSP Pending
Bellman–Ford algorithm Pending
Floyd–Warshall algorithm Pending
Knuth–Morris–Pratt algorithm Pending

Other Important Algorithms

Algorithm Status
Infix Expressions Evaluator Pending
Convex Hull (Graham scan) Pending
Strassen algorithm for Matrix multiplication Pending

Compiling

For compiling directly via command-line (No Eclipse or other IDE), do:

$ cd src/shared`

$ javac -sourcepath .. Rodrigosort.java`

$ java -cp .. Rodrigosort.Program

Timing Programs

If you're running from the command-line just do:

$ time java Program

If you're running Java within an IDE or something like that, just do:

final long startTime = System.currentTimeMillis();
// your awesome code comes here...
final long endTime = System.currentTimeMillis();

System.out.println("Total execution time: " + (endTime - startTime));

Within your main method.

Algorithms

Visualizations

Books

  • Introduction to Algorithms, 3rd edition. CORMEN, Thomas H. MIT Press and McGraw-Hill
  • Competitive Programming 3. HALIM, Steven. lulu

Competitive Programming

I am very interested in solving problems from Programming Contests, specially the ones found on the UVa website. If you're interested in my solutions to some of their problems, check out this repo of mine.

Acknowledgements

Thanks to,

  • Professor Paulo G.S da Fonseca
  • Professor Katia S. Guimarães. Ph.D

Without these people, instead of little, I would know nothing about Algorithms. Also, thanks to the whole Internet, for all the infinite amount of knowledge on the field provided for free.

Copyright

© 2013-2017 Rodrigo Alves

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.