Skip to content

Commit

Permalink
Added Sorting and Search Algorithms to C
Browse files Browse the repository at this point in the history
  • Loading branch information
utkarshkonwar committed Jan 6, 2025
1 parent b0c00df commit 2bf6879
Show file tree
Hide file tree
Showing 11 changed files with 468 additions and 1 deletion.
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

0 comments on commit 2bf6879

Please sign in to comment.