Data-Structures-Algorithms

所属分类:数据结构
开发工具:Python
文件大小:0KB
下载次数:0
上传日期:2021-07-09 04:58:49
上 传 者sh-1993
说明:  每当我16岁参加校州竞赛时,我就自学了所有关于数据结构和算法的知识,并用来更新我在CS方面的知识。获得软件工程工作所需的一切:)
(Everything I self-taught myself about Data Structures and Algorithms whenever I was 16 for School State Competitions & used to freshen up my knowledge on CS. Everything you need to know to get a software engineering job :))

文件列表:
AddvsMultiply.py (261, 2021-07-08)
Algorithmic Runtimes (438, 2021-07-08)
Array.py (1661, 2021-07-08)
Big O notation (535, 2021-07-08)
BigOMeasurement (630, 2021-07-08)
Dictionary.py (387, 2021-07-08)
ExponentialTime.py (191, 2021-07-08)
Fibonacci Sequence (808, 2021-07-08)
Fibonacci.py (308, 2021-07-08)
HowToRecursion (767, 2021-07-08)
HowdoesRecursionworks.py (1159, 2021-07-08)
Intro Notes (2022, 2021-07-08)
LICENSE (1132, 2021-07-08)
Lineartime.py (219, 2021-07-08)
LinkedList.py (1061, 2021-07-08)
ListOperations.py (341, 2021-07-08)
LogarithmicTime.py (243, 2021-07-08)
QuadraticTime.py (177, 2021-07-08)
Recursion.py (294, 2021-07-08)
RecursionEX.py (293, 2021-07-08)
RecursiveIterative.py (869, 2021-07-08)
SpaceComplexity.py (177, 2021-07-08)
Tuples.py (457, 2021-07-08)
coding Interview/ (0, 2021-07-08)
coding Interview/BinarySearcher.py (426, 2021-07-08)
coding Interview/ProblemSolvingSteps (1003, 2021-07-08)
coding Interview/TechnicalQuestions (425, 2021-07-08)

# Data Structures & Algorithms ## What are Data Structures? A data structure, in programming language, is a specific means of storing and organizing data in a computer's memory so that it can be used effectively later. Data may be organized in a variety of ways, with a data structure being the conceptual or statistical construct for a specific data organization. ## Why you Should Learn Data Structures and Algorithms In a technical interview or coding assessment, you'll almost certainly be asked to solve programming problems like reversing a linked list or juggling a binary tree, whether you're considering a career in software development or data science. However, it is well understood that as a software developer, you would almost never encounter these issues. But it's understandable to be perplexed as to why such questions are raised in interviews and coding tests. The following characteristics are shown when solving programming problems: * You must learn of a dilemma in a logical manner and approach it step by step. * For programs you write, you can imagine various inputs, outputs, and edge cases. * You have the ability to clearly express your thoughts to coworkers and implement their feedback. * Most significantly, you can transform your thoughts and ideas into readable, functioning code. In an interview, your solution to the problem is checked, not your understanding of complex data models or algorithms. You may struggle to solve the issue but still pass the interview, or the other way around. This course will teach you how to successfully overcome challenges as well as straightforward interviews. ## Basics/Must know: #### Big O Notation: Big O notationis a symbolism used to define the asymptotic action of functions in complexity theory, computer science, and mathematics. It essentially shows you how quickly a role expands or declines. #### Big Ω Omega Notation: The big Omega() function, which is similar to big O notation, is used in computer science to define an algorithm's output or complexity. #### Theta Θ Notation: The theta notation describes exact asymptotic action by bounding a function from above and below. Dropping low order terms and ignoring leading constants is an easy way to get Theta notation for an expression. ## Difference between Big O and Big Ω. The difference between Big O and Big notation is that Big O is used to characterize an algorithm's worst-case running time. Big notation, on the other hand, is used to define a given algorithm's best case running time. ## Big O Notation Order: #### O(1) – Constant time #### O(log n) – Logarithmic time #### O(n) – Linear time #### O(n log n) – Quasilinear time #### O(n) – Quadratic time ## What does these notations mean? #### O(1): Constant Time #### O(log n): Logarithmic Time #### O(n): Linear Time #### O(n log n): Quasilinear Time #### O(n): Quadratic Time ## Data Structures: ### Array The term "array" refers to a container that can accommodate a fixed number of objects of the same kind. Arrays are used by the majority of data structures to execute their algorithms. The following are some key words to know in order to grasp the idea of Array. * Element - An element is the name given to each object in an array. * Index - A numerical index is assigned to each position of an element in an array and is used to label the element. ### Linked List A *Linked List* is a linear set of data items called nodes, each of which has a pointer pointing to the next node. It's a data structure made up of a set of nodes that together form a sequence. ### Stack An Abstract Data Type (ADT) is a data type that is found in almost all programming languages. It's called stack because it looks like a real-life stack, such as a deck of cards or a stack of dishes. ### Queue Queue is a data structure that is identical to Stacks in that it is an abstract data structure. A queue, unlike stacks, is open on both sides. The one end is often used to upload data (enqueue), while the other is always used to delete data (dequeue) (dequeue). The First-In-First-Out (FIFO) approach is used in Queue, which means that the data object that was stored first will be reached first. ### Tree A tree is a commonly used abstract data form that represents a hierarchical tree structure as a group of connected nodes, with a root value and subtrees of children with a parent node. ### Binary Tree A binary tree is a data structure that is used to store information. A binary tree has the unique property that each node can only have two children. A binary tree combines the advantages of an ordered array and a linked list, with search times comparable to those of a sorted array and insertion and deletion times comparable to those of a linked list. ### Binary Search Tree A Binary Search Tree is a list of nodes that are structured in such a way that their BST properties are maintained. A key and a value are assigned to each node. The requested key is compared to the keys in BST during the scan, and if detected, the associated value is retrieved. ### Trie Trie is a node-based data structure that resembles a forest. Data can be stored in nodes. There can be zero, one, or more children for each node. Each node is used to store a character while the trie is used to store a vocabulary, and each “branch” of the trie represents a special word. ### Fenwick Tree A Fenwick tree, also known as a binary indexed tree, is a data structure that can quickly update elements in a table of numbers and determine prefix sums. Boris Ryabko suggested this structure in 1989, with a later revision written in 1992. It was later dubbed the Fenwick tree after Peter Fenwick, who first identified it in a paper published in 1994. ### Segment Tree A Segment Tree is a versatile data structure that can be used to address a wide range of problems. It is also possible to do more complicated operations and respond to more complex queries. The Segment Tree, in particular, is conveniently extended to larger dimensions. ### Heap A Heap is a Tree-based data structure with a full binary tree as the tree. Heaps can be divided into two categories: * Max-Heap: In a Max-Heap, the root node's key must be the largest of all the keys present in all of its descendants. For all sub-trees of that Binary Tree, the same property must be true recursively. * Min-Heap: In a Min-Heap, the root nodes key must be the smallest of all the keys present in all of its descendants. ### Hashing A cryptographic hash function is called hashing. It's a mathematical process that converts data of any size into a fixed-size hash. A hash function algorithm is intended to be a one-way function that cannot be reversed. ### Graph A graph is a visual depiction of a collection of items in which some elements are linked together by connections. The points that connect the linked items are called vertices, and the ties that connect the vertices are called edges. ## Algorithms: ### Sorting #### Quicksort #### Mergesort #### Bucket Sort ## Graph Algorithms #### Depth First Search (DPS) #### Breadth First Search (DFS) #### Topological Sort #### Bellman-Ford Algorithm #### Dijkstra's Algorithm #### Kruskal's Algorithm #### Floyd-Warshall Algorithm #### Prim's Algorithm

近期下载者

相关文件


收藏者