Giter Club home page Giter Club logo

java-algorithms-club's Introduction

Welcome to the Java Algorithms and Data Structures!

Based in uniovi.ed.

Here you'll find implementations of popular algorithms and data structures in everyone's favorite new language Java, with detailed explanations of how they work.

If you're a computer science student who needs to learn this stuff for exams -- or if you're a self-taught programmer who wants to brush up on the theory behind your craft -- you've come to the right place!

The goal of this project is to explain how algorithms work. The focus is on clarity and readability of the code, not on making a reusable library that you can drop into your own projects. That said, most of the code should be ready for production use but you may need to tweak it to fit into your own codebase.

Code is compatible Eclipse Oxigen, Gradle and Java 1.8. We'll keep this updated with the latest version of Java.

๐Ÿ˜ Suggestions and contributions are welcome! ๐Ÿ˜

How to import into Eclipse Oxigen?

File > Import > Gradle > Gradle Project > Select the project forlder > done.

Data Structures

The choice of data structure for a particular task depends on a few things.

First, there is the shape of your data and the kinds of operations that you'll need to perform on it. If you want to look up objects by a key you need some kind of dictionary; if your data is hierarchical in nature you want a tree structure of some sort; if your data is sequential you want a stack or queue.

Second, it matters what particular operations you'll be performing most, as certain data structures are optimized for certain actions. For example, if you often need to find the most important object in a collection, then a heap or priority queue is more optimal than a plain array.

Most of the time using just the built-in Array, Dictionary, and Set types is sufficient, but sometimes you may want something more fancy...

Trees

  • Heap. A binary tree stored in an array, so it doesn't use pointers. Makes a great priority queue. Fibonacci Heap
  • B-Tree. A self-balancing search tree, in which nodes can have more than two children.

Hashing

  • Hash Table. Allows you to store and retrieve objects by a key. This is how the dictionary type is usually implemented.

Graphs

  • Graph.

Learn more!

For more information, check out these great books:

The following books are available for free online:

Other algorithm repositories:

  • EKAlgorithms. A great collection of algorithms in Objective-C.
  • @lorentey. Production-quality Swift implementations of common algorithms and data structures.
  • Rosetta Code. Implementations in pretty much any language you can think of.
  • AlgorithmVisualizer. Visualize algorithms on your browser.
  • Swift Structures Data Structures with directions on how to use them here

java-algorithms-club's People

Contributors

thewillyhuman avatar

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.