Skip to content
This repository was archived by the owner on Oct 4, 2023. It is now read-only.
Open
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
84 changes: 84 additions & 0 deletions C++/merge-sort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#include <iostream>
#include <vector>

void merge(std::vector<int>& arr, int left, int middle, int right) {
int n1 = middle - left + 1;
int n2 = right - middle;

// Create temporary arrays
std::vector<int> left_arr(n1);
std::vector<int> right_arr(n2);

// Copy data to temporary arrays left_arr[] and right_arr[]
for (int i = 0; i < n1; i++) {
left_arr[i] = arr[left + i];
}
for (int i = 0; i < n2; i++) {
right_arr[i] = arr[middle + 1 + i];
}

// Merge the two sorted arrays back into arr[]
int i = 0;
int j = 0;
int k = left;

while (i < n1 && j < n2) {
if (left_arr[i] <= right_arr[j]) {
arr[k] = left_arr[i];
i++;
} else {
arr[k] = right_arr[j];
j++;
}
k++;
}

// Copy the remaining elements of left_arr[], if any
while (i < n1) {
arr[k] = left_arr[i];
i++;
k++;
}

// Copy the remaining elements of right_arr[], if any
while (j < n2) {
arr[k] = right_arr[j];
j++;
k++;
}
}

void merge_sort(std::vector<int>& arr, int left, int right) {
if (left < right) {
int middle = left + (right - left) / 2;

// Sort first and second halves
merge_sort(arr, left, middle);
merge_sort(arr, middle + 1, right);

// Merge the sorted halves
merge(arr, left, middle, right);
}
}

int main() {
int n;
std::cout << "Enter the number of elements: ";
std::cin >> n;

std::vector<int> input_list(n);
std::cout << "Enter " << n << " elements:\n";
for (int i = 0; i < n; i++) {
std::cin >> input_list[i];
}

merge_sort(input_list, 0, n - 1);

std::cout << "Sorted list: ";
for (int i = 0; i < n; i++) {
std::cout << input_list[i] << " ";
}
std::cout << std::endl;

return 0;
}
59 changes: 59 additions & 0 deletions C++/quick-sort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include <iostream>
#include <vector>

void quick_sort(std::vector<int>& arr, int left, int right) {
if (left < right) {
int pivot = arr[left]; // Choose a pivot element (first element in this case)
int i = left;
int j = right;

while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}

while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}

arr[i] = pivot;

// Recursively sort the left and right sub-arrays
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
}

int main() {
std::vector<int> input_list;
int n;

std::cout << "Enter the number of elements: ";
std::cin >> n;

std::cout << "Enter " << n << " elements:\n";
for (int i = 0; i < n; i++) {
int element;
std::cin >> element;
input_list.push_back(element);
}

quick_sort(input_list, 0, n - 1);

std::cout << "Sorted list: ";
for (int i = 0; i < n; i++) {
std::cout << input_list[i] << " ";
}
std::cout << std::endl;

return 0;
}
32 changes: 32 additions & 0 deletions C++/sieve algorithm.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e7 + 10;
vector<bool> isprime(N,1);


int main(){

isprime[0]=false;isprime[1]=false;
for(int i=2; i<N; i++){
if(isprime[i]==true){
for(int j = 2*i; j<N; j+=i){
isprime[j]= false;
}
}
}


// Input the number to check whether prime or not

ll x;
cin>>x;

if(!isprime[x]){
cout<<x<<" is not prime number"<<endl;
}else{
cout<<x<<" is prime number"<<endl;
}

return 0;
}