Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Sorting and Search Algorithms to C #199

Merged
merged 1 commit into from
Jan 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions public/consolidated/c.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,106 @@
"code": "#include<stdio.h>\nvoid swap(int* num1,int* num2){\n *num1 = *num1 + *num2;\n *num2 = *num1 - *num2;\n *num1 = *num1 - *num2;\n}\n\n// Usage:\nint a = 3,b = 4;\nswap(&a,&b); // swaps the values of the a and b variables\n"
}
]
},
{
"name": "Search",
"snippets": [
{
"title": "Binary Search ",
"description": "Searches for an element in a sorted array using the Binary Search algorithm.",
"author": "0xHouss",
"tags": [
"search",
"binarysearch",
"array",
"algorithm"
],
"contributors": [],
"code": "int binarySearch(int arr[], int low, int high, int x) {\n while (low <= high) {\n int mid = low + (high - low) / 2;\n\n // Check if x is present at mid\n if (arr[mid] == x) {\n return mid;\n }\n\n // If x is smaller, search the left half\n if (arr[mid] > x) {\n high = mid - 1;\n } else { // If x is larger, search the right half\n low = mid + 1;\n }\n }\n return -1; // Element not found\n}\n\n// Usage:\nint arr[] = {2, 3, 4, 10, 40};\nint n = sizeof(arr) / sizeof(arr[0]);\nint x = 10;\nint result = binarySearch(arr, 0, n - 1, x);\n// result = 3 (index of the element 10)\n\n\n"
},
{
"title": "Linear Search ",
"description": "Searches for an element in an array using the Linear Search algorithm.",
"author": "0xHouss",
"tags": [
"search",
"linearsearch",
"array",
"algorithm"
],
"contributors": [],
"code": "int linearSearch(int arr[], int n, int x) {\n for (int i = 0; i < n; i++) {\n if (arr[i] == x) {\n return i; // Element found at index i\n }\n }\n return -1; // Element not found\n}\n\n// Usage:\nint arr[] = {10, 20, 30, 40, 50};\nint n = sizeof(arr) / sizeof(arr[0]);\nint x = 30;\nint result = linearSearch(arr, n, x);\n// result = 2 (index of the element 30)\n\n"
}
]
},
{
"name": "Sorting",
"snippets": [
{
"title": "Bubble Sort ",
"description": "Sorts an array of integers using the Bubble Sort algorithm.",
"author": "0xHouss",
"tags": [
"sorting",
"bubblesort",
"array",
"algorithm"
],
"contributors": [],
"code": "void bubbleSort(int arr[], int n) {\n for (int i = 0; i < n - 1; i++) {\n for (int j = 0; j < n - i - 1; j++) {\n if (arr[j] > arr[j + 1]) {\n // Swap arr[j] and arr[j + 1]\n int temp = arr[j];\n arr[j] = arr[j + 1];\n arr[j + 1] = temp;\n }\n }\n }\n}\n\n// Usage:\nint arr[] = {64, 34, 25, 12, 22, 11, 90};\nint n = sizeof(arr) / sizeof(arr[0]);\nbubbleSort(arr, n);\n// Now arr[] is sorted: {11, 12, 22, 25, 34, 64, 90}\n"
},
{
"title": "Insertion Sort ",
"description": "Sorts an array of integers using the Insertion Sort algorithm.",
"author": "0xHouss",
"tags": [
"sorting",
"insertionsort",
"array",
"algorithm"
],
"contributors": [],
"code": "void insertionSort(int arr[], int n) {\n for (int i = 1; i < n; i++) {\n int key = arr[i];\n int j = i - 1;\n\n // Move elements of arr[0..i-1] that are greater than key\n // to one position ahead of their current position\n while (j >= 0 && arr[j] > key) {\n arr[j + 1] = arr[j];\n j--;\n }\n arr[j + 1] = key;\n }\n}\n\n// Usage:\nint arr[] = {12, 11, 13, 5, 6};\nint n = sizeof(arr) / sizeof(arr[0]);\ninsertionSort(arr, n);\n// Now arr[] is sorted: {5, 6, 11, 12, 13}\n\n"
},
{
"title": "Merge Sort ",
"description": "Sorts an array of integers using the Merge Sort algorithm.",
"author": "0xHouss",
"tags": [
"sorting",
"mergesort",
"array",
"algorithm"
],
"contributors": [],
"code": "#include <stdio.h>\n\nvoid merge(int arr[], int l, int m, int r) {\n int n1 = m - l + 1;\n int n2 = r - m;\n\n // Temporary arrays\n int L[n1], R[n2];\n\n // Copy data to temporary arrays L[] and R[]\n for (int i = 0; i < n1; i++)\n L[i] = arr[l + i];\n for (int j = 0; j < n2; j++)\n R[j] = arr[m + 1 + j];\n\n int i = 0, j = 0, k = l;\n\n // Merge the temporary arrays back into arr[l..r]\n while (i < n1 && j < n2) {\n if (L[i] <= R[j]) {\n arr[k] = L[i];\n i++;\n } else {\n arr[k] = R[j];\n j++;\n }\n k++;\n }\n\n // Copy remaining elements of L[], if any\n while (i < n1) {\n arr[k] = L[i];\n i++;\n k++;\n }\n\n // Copy remaining elements of R[], if any\n while (j < n2) {\n arr[k] = R[j];\n j++;\n k++;\n }\n}\n\nvoid mergeSort(int arr[], int l, int r) {\n if (l < r) {\n int m = l + (r - l) / 2;\n\n // Sort first and second halves\n mergeSort(arr, l, m);\n mergeSort(arr, m + 1, r);\n\n merge(arr, l, m, r);\n }\n}\n\n// Usage:\nint arr[] = {38, 27, 43, 3, 9, 82, 10};\nint n = sizeof(arr) / sizeof(arr[0]);\nmergeSort(arr, 0, n - 1);\n// Now arr[] is sorted: {3, 9, 10, 27, 38, 43, 82}\n\n"
},
{
"title": "Quick Sort ",
"description": "Sorts an array of integers using the Quick Sort algorithm.",
"author": "0xHouss",
"tags": [
"sorting",
"quicksort",
"array",
"algorithm"
],
"contributors": [],
"code": "int partition(int arr[], int low, int high) {\n int pivot = arr[high]; // Pivot element\n int i = low - 1;\n\n for (int j = low; j < high; j++) {\n if (arr[j] < pivot) {\n i++;\n // Swap arr[i] and arr[j]\n int temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n }\n\n // Swap arr[i + 1] and arr[high] (pivot)\n int temp = arr[i + 1];\n arr[i + 1] = arr[high];\n arr[high] = temp;\n\n return i + 1;\n}\n\nvoid quickSort(int arr[], int low, int high) {\n if (low < high) {\n int pi = partition(arr, low, high);\n\n // Recursively sort elements before and after partition\n quickSort(arr, low, pi - 1);\n quickSort(arr, pi + 1, high);\n }\n}\n\n// Usage:\nint arr[] = {10, 7, 8, 9, 1, 5};\nint n = sizeof(arr) / sizeof(arr[0]);\nquickSort(arr, 0, n - 1);\n// Now arr[] is sorted: {1, 5, 7, 8, 9, 10}\n\n"
},
{
"title": "Selection Sort ",
"description": "Sorts an array of integers using the Selection Sort algorithm.",
"author": "0xHouss",
"tags": [
"sorting",
"selectionsort",
"array",
"algorithm"
],
"contributors": [],
"code": "void selectionSort(int arr[], int n) {\n for (int i = 0; i < n - 1; i++) {\n int minIdx = i;\n\n // Find the minimum element in the unsorted part of the array\n for (int j = i + 1; j < n; j++) {\n if (arr[j] < arr[minIdx]) {\n minIdx = j;\n }\n }\n\n // Swap the found minimum element with the first element of the unsorted part\n int temp = arr[minIdx];\n arr[minIdx] = arr[i];\n arr[i] = temp;\n }\n}\n\n// Usage:\nint arr[] = {64, 25, 12, 22, 11};\nint n = sizeof(arr) / sizeof(arr[0]);\nselectionSort(arr, n);\n// Now arr[] is sorted: {11, 12, 22, 25, 64}\n\n"
}
]
}
]
18 changes: 17 additions & 1 deletion public/consolidated/cpp.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
]
},
{
"categoryName": "Debuging",
"name": "Debugging",
"snippets": [
{
Expand All @@ -50,6 +49,23 @@
}
]
},
{
"name": "Debuging",
"snippets": [
{
"title": "Vector Print",
"description": "Overloads the << operator to print the contents of a vector just like in python.",
"author": "Mohamed-faaris",
"tags": [
"printing",
"debuging",
"vector"
],
"contributors": [],
"code": "#include <iostream> \n#include <vector> \n\ntemplate <typename T>\nstd::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) {\n os << \"[\"; \n for (size_t i = 0; i < vec.size(); ++i) {\n os << vec[i]; // Print each vector element\n if (i != vec.size() - 1) {\n os << \", \"; // Add separator\n }\n }\n os << \"]\"; \n return os; // Return the stream\n}\n\n// Usage:\nstd::vector<int> numbers = {1, 2, 3, 4, 5};\nstd::cout << numbers << std::endl; // Outputs: [1, 2, 3, 4, 5]\n\n"
}
]
},
{
"name": "Math And Numbers",
"snippets": [
Expand Down
63 changes: 63 additions & 0 deletions public/consolidated/css.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,67 @@
[
{
"name": "Animations",
"snippets": [
{
"title": "Blink Animation",
"description": "Adds an infinite blinking animation to an element",
"author": "AlsoKnownAs-Ax",
"tags": [
"animation",
"blink",
"infinite"
],
"contributors": [],
"code": ".blink {\n animation: blink 1s linear infinite;\n}\n\n@keyframes blink{\n 0%{\n opacity: 0;\n }\n 50%{\n opacity: 1;\n }\n 100%{\n opacity: 0;\n }\n}\n"
},
{
"title": "Pulse Animation",
"description": "Adds a smooth pulsing animation with opacity and scale effects",
"author": "AlsoKnownAs-Ax",
"tags": [
"animation",
"pulse",
"pulse-scale"
],
"contributors": [],
"code": ".pulse {\n animation: pulse 2s ease-in-out infinite;\n}\n\n@keyframes pulse {\n 0% {\n opacity: 0.5;\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(1.05);\n }\n 100% {\n opacity: 0.5;\n transform: scale(1);\n }\n}\n"
},
{
"title": "Shake Animation",
"description": "Adds a shake animation ( commonly used to mark invalid fields )",
"author": "AlsoKnownAs-Ax",
"tags": [
"shake",
"shake-horizontal"
],
"contributors": [],
"code": ".shake {\n animation: shake .5s ease-in-out;\n}\n\n@keyframes shake {\n 0%, 100% {\n transform: translateX(0);\n }\n 25% {\n transform: translateX(-10px);\n }\n 50% {\n transform: translateX(10px);\n }\n 75% {\n transform: translateX(-10px);\n }\n}\n"
},
{
"title": "Slide-in Animation",
"description": "Adds a slide-in from the right side of the screen",
"author": "AlsoKnownAs-Ax",
"tags": [
"animation",
"slide-in",
"slide-right"
],
"contributors": [],
"code": ".slide-in {\n animation: slide-in 1s ease-in-out;\n}\n\n@keyframes slide-in {\n from {\n scale: 300% 1;\n translate: 150vw 0;\n }\n\n to {\n scale: 100% 1;\n translate: 0 0;\n }\n}\n"
},
{
"title": "Typewriter Animation",
"description": "Adds a typewriter animation + blinking cursor",
"author": "AlsoKnownAs-Ax",
"tags": [
"blinking",
"typewriter"
],
"contributors": [],
"code": " <div class=\"typewriter\">\n <div>\n <p>Typerwriter Animation</p>\n </div>\n </div>\n```\n\n```css\n .typewriter{\n display: flex;\n justify-content: center;\n }\n\n .typewriter p {\n overflow: hidden;\n font-size: 1.5rem;\n font-family: monospace;\n border-right: 1px solid;\n margin-inline: auto;\n white-space: nowrap;\n /* The cursor will inherit the text's color by default */\n /* border-color: red */ \n /* Steps: number of chars (better to set directly in js)*/\n animation: typing 3s steps(21) forwards,\n blink 1s step-end infinite;\n }\n\n @keyframes typing{\n from{\n width: 0%\n }\n to{\n width: 100%\n }\n }\n\n @keyframes blink{\n 50%{\n border-color: transparent;\n }\n }\n"
}
]
},
{
"name": "Buttons",
"snippets": [
Expand Down
18 changes: 18 additions & 0 deletions public/consolidated/java.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
[
{
"name": "Array Manipulation",
"snippets": [
{
"title": "Zip Two Lists",
"description": "Zips two lists into a list of paired elements, combining corresponding elements from both lists.",
"author": "davidanukam",
"tags": [
"lists",
"zip",
"stream-api",
"collections"
],
"contributors": [],
"code": "import java.util.*; // Importing utility classes for List and Arrays\nimport java.util.stream.IntStream; // Importing IntStream for range and mapping\nimport java.util.stream.Collectors; // Importing Collectors for collecting stream results\n\npublic <A, B> List<List<Object>> zip(List<A> list1, List<B> list2) {\n // Create pairs by iterating through the indices of both lists\n return IntStream.range(0, Math.min(list1.size(), list2.size())) // Limit the range to the smaller list\n .mapToObj(i -> Arrays.asList(list1.get(i), list2.get(i))) // Pair elements from both lists at index i\n .collect(Collectors.toList()); // Collect the pairs into a List\n}\n\n// Usage:\nList<String> arr1 = Arrays.asList(\"a\", \"b\", \"c\");\nList<Integer> arr2 = Arrays.asList(1, 2, 3);\nList<List<Object>> zipped = zip(arr1, arr2);\n\nSystem.out.println(zipped); // Output: [[a, 1], [b, 2], [c, 3]]\n"
}
]
},
{
"name": "Basics",
"snippets": [
Expand Down
36 changes: 36 additions & 0 deletions snippets/c/search/binary-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: Binary Search
description: Searches for an element in a sorted array using the Binary Search algorithm.
author: 0xHouss
tags: search,binarysearch,array,algorithm
---

```c
int binarySearch(int arr[], int low, int high, int x) {
while (low <= high) {
int mid = low + (high - low) / 2;

// Check if x is present at mid
if (arr[mid] == x) {
return mid;
}

// If x is smaller, search the left half
if (arr[mid] > x) {
high = mid - 1;
} else { // If x is larger, search the right half
low = mid + 1;
}
}
return -1; // Element not found
}

// Usage:
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
// result = 3 (index of the element 10)


```
25 changes: 25 additions & 0 deletions snippets/c/search/linear-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: Linear Search
description: Searches for an element in an array using the Linear Search algorithm.
author: 0xHouss
tags: search,linearsearch,array,algorithm
---

```c
int linearSearch(int arr[], int n, int x) {
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
return i; // Element found at index i
}
}
return -1; // Element not found
}

// Usage:
int arr[] = {10, 20, 30, 40, 50};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 30;
int result = linearSearch(arr, n, x);
// result = 2 (index of the element 30)

```
27 changes: 27 additions & 0 deletions snippets/c/sorting/bubble-sort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: Bubble Sort
description: Sorts an array of integers using the Bubble Sort algorithm.
author: 0xHouss
tags: sorting,bubblesort,array,algorithm
---

```c
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Swap arr[j] and arr[j + 1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

// Usage:
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
// Now arr[] is sorted: {11, 12, 22, 25, 34, 64, 90}
```
30 changes: 30 additions & 0 deletions snippets/c/sorting/insertion-sort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: Insertion Sort
description: Sorts an array of integers using the Insertion Sort algorithm.
author: 0xHouss
tags: sorting,insertionsort,array,algorithm
---

```c
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;

// Move elements of arr[0..i-1] that are greater than key
// to one position ahead of their current position
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}

// Usage:
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
insertionSort(arr, n);
// Now arr[] is sorted: {5, 6, 11, 12, 13}

```
Loading
Loading