Skip to content

Commit aa38c8c

Browse files
author
Prateek Narang
committed
added dsa essential code
0 parents  commit aa38c8c

File tree

118 files changed

+4628
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+4628
-0
lines changed

.DS_Store

20 KB
Binary file not shown.

02 Arrays/.DS_Store

6 KB
Binary file not shown.

02 Arrays/01array.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
#include<iostream>
3+
using namespace std;
4+
5+
6+
int main(){
7+
8+
int marks[100] = {-1};
9+
10+
int n;
11+
cout<<"Enter the no of students ";
12+
cin>>n;
13+
14+
15+
//Input
16+
for(int i=1; i<=n; i++){
17+
cin>> marks[i];
18+
19+
marks[i] = marks[i]*2;
20+
}
21+
22+
//Update
23+
24+
25+
//Output
26+
for(int i=0;i<100;i++){
27+
cout<< marks[i] <<" ,";
28+
}
29+
30+
cout <<endl;
31+
32+
33+
return 0;
34+
}

02 Arrays/02array.cpp

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
#include<iostream>
3+
using namespace std;
4+
5+
void printArray(int * arr,int n){
6+
7+
8+
cout <<"In Function "<<sizeof(arr) <<endl;
9+
arr[0] = 100;
10+
for(int i=0;i<n;i++){
11+
cout << arr[i] <<endl;
12+
}
13+
14+
}
15+
16+
17+
int main(){
18+
19+
int arr[] = {1,2,3,4,5,6};
20+
21+
int n = sizeof(arr)/sizeof(int);
22+
23+
24+
25+
printArray(arr,n);
26+
27+
28+
cout <<"In Main "<<sizeof(arr) <<endl;
29+
for(int i=0;i<n;i++){
30+
cout << arr[i] <<endl;
31+
}
32+
33+
34+
35+
36+
return 0;
37+
}

02 Arrays/03_linear_search.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
5+
int linear_search(int arr[],int n,int key){
6+
7+
for(int i=0; i<n; i++){
8+
//Check if current element matches with the key
9+
if(arr[i] == key){
10+
return i;
11+
}
12+
}
13+
//out of the loop
14+
return -1;
15+
}
16+
17+
18+
int main(){
19+
20+
int arr[] = {10,15,12,9,6,4,3,10,8};
21+
int n = sizeof(arr)/sizeof(int);
22+
23+
int key;
24+
cin>>key;
25+
26+
int index = linear_search(arr,n,key);
27+
if(index!=-1){
28+
cout<<key <<" is present at index "<< index <<endl;
29+
}
30+
else{
31+
cout<<key <<" is NOT Found!" <<endl;
32+
}
33+
34+
35+
return 0;
36+
}

02 Arrays/Subarray_sum_1.cpp

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
//Problem : Print all subarrays of a given array
5+
// Brute Force Approach O(N^3)
6+
int largestSubarraySum1(int arr[],int n){
7+
8+
int largest_sum = 0;
9+
10+
for(int i=0;i<n;i++){
11+
for(int j=i; j<n; j++){
12+
13+
int subarraySum = 0;
14+
15+
for(int k=i; k<=j; k++){
16+
//cout<<arr[k] <<",";
17+
subarraySum += arr[k];
18+
}
19+
//put a check is subarraySum > largest_sum
20+
largest_sum = max(largest_sum,subarraySum);
21+
22+
}
23+
}
24+
return largest_sum;
25+
}
26+
// Prefix Sum Approach O(N^2)
27+
int largestSubarraySum2(int arr[],int n){
28+
29+
//Prefix Sums
30+
int prefix[100] = {0};
31+
prefix[0] = arr[0];
32+
33+
for(int i=1;i<n;i++){
34+
prefix[i] = prefix[i-1] + arr[i];
35+
}
36+
37+
//largest sum login
38+
int largest_sum = 0;
39+
40+
for(int i=0;i<n;i++){
41+
for(int j=i; j<n; j++){
42+
int subarraySum = i>0 ? prefix[j] - prefix[i-1] : prefix[j];
43+
//put a check is subarraySum > largest_sum
44+
largest_sum = max(largest_sum,subarraySum);
45+
46+
}
47+
}
48+
return largest_sum;
49+
}
50+
51+
int main(){
52+
//Array Containing
53+
int arr[] = {-2,3,4,-1,5,-12,6,1,3};
54+
int n = sizeof(arr)/sizeof(int);
55+
56+
cout<< largestSubarraySum1(arr,n) <<endl;
57+
cout<< largestSubarraySum2(arr,n) <<endl;
58+
59+
60+
return 0;
61+
}

02 Arrays/binary_search.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
5+
int binary_search(int arr[],int n,int key){
6+
//Implement binary search
7+
int s = 0;
8+
int e = n - 1;
9+
10+
while(s<=e){
11+
int mid = (s+e)/2;
12+
13+
if(arr[mid] == key){
14+
return mid;
15+
}
16+
else if(arr[mid] > key){
17+
e = mid - 1;
18+
}
19+
else{
20+
21+
s = mid + 1;
22+
}
23+
}
24+
25+
return -1;
26+
}
27+
28+
29+
int main(){
30+
31+
int arr[] = {10,20,30,40,45,60,70,89};
32+
int n = sizeof(arr)/sizeof(int);
33+
34+
int key;
35+
cin>>key;
36+
37+
int index = binary_search(arr,n,key);
38+
if(index!=-1){
39+
cout<<key <<" is present at index "<< index <<endl;
40+
}
41+
else{
42+
cout<<key <<" is NOT Found!" <<endl;
43+
}
44+
45+
46+
return 0;
47+
}

02 Arrays/kadanes_algorithm.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
int maximum_subarray_sum(int arr[],int n){
5+
6+
int cs = 0;
7+
int largest = 0;
8+
9+
for(int i=0;i<n;i++){
10+
cs = cs + arr[i];
11+
if(cs < 0){
12+
cs = 0;
13+
}
14+
largest = max(largest, cs);
15+
}
16+
17+
return largest;
18+
}
19+
20+
21+
int main(){
22+
//Array Containing
23+
int arr[] = {-2,3,4,-1,5,-12,6,1,3};
24+
int n = sizeof(arr)/sizeof(int);
25+
26+
cout<< maximum_subarray_sum(arr,n) <<endl;
27+
28+
return 0;
29+
}

02 Arrays/print_all_pairs.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
//Problem : Print all subarrays of a given array
5+
void printSubarrays(int arr[],int n){
6+
7+
for(int i=0;i<n;i++){
8+
for(int j=i; j<n;j++){
9+
for(int k=i;k<=j;k++){
10+
cout<<arr[k] <<",";
11+
}
12+
cout <<endl;
13+
}
14+
15+
}
16+
17+
}
18+
19+
// Print the sum of each subarray & find out the largest sum
20+
21+
22+
int main(){
23+
//Array Containing
24+
int arr[] = {-2,3,4,5,-12,6,2,3};
25+
int n = sizeof(arr)/sizeof(int);
26+
27+
printSubarrays(arr,n);
28+
29+
30+
31+
return 0;
32+
}

02 Arrays/reverse_array.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
//Problem : Reverse all the elements of a given array
5+
void reverseArray(int arr[],int n){
6+
7+
int s = 0;
8+
int e = n - 1;
9+
10+
while(s < e){
11+
swap(arr[s],arr[e]);
12+
s += 1;
13+
e -= 1;
14+
}
15+
16+
}
17+
18+
19+
int main(){
20+
21+
int arr[] = {10,20,30,45,60,80,90};
22+
int n = sizeof(arr)/sizeof(int);
23+
24+
//Print the Output
25+
for(int i=0; i<n; i++){
26+
cout << arr[i] << " ";
27+
}
28+
cout <<endl;
29+
30+
31+
reverseArray(arr,n);
32+
33+
//Print the Output
34+
for(int i=0; i<n; i++){
35+
cout << arr[i] << " ";
36+
}
37+
cout <<endl;
38+
39+
return 0;
40+
}

03 Basic Sorting /.DS_Store

6 KB
Binary file not shown.

03 Basic Sorting /bubble_sort.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<iostream>
2+
#include<ctime>
3+
using namespace std;
4+
5+
bool compare(int a,int b){
6+
return a > b;
7+
}
8+
9+
//Sort the elements in increasing order
10+
void bubble_sort(int a[],int n){
11+
12+
for(int times=1;times<=n-1;times++){
13+
//repeated swapping
14+
for(int j=0; j <= n - times - 1; j++ ){
15+
if(compare(a[j],a[j+1])){
16+
swap(a[j],a[j+1]);
17+
}
18+
}
19+
20+
}
21+
}
22+
23+
24+
25+
26+
int main(){
27+
int arr[] = {-2,3,4,-1,5,-12,6,1,3};
28+
int n = sizeof(arr)/sizeof(int);
29+
30+
31+
bubble_sort(arr,n);
32+
33+
34+
35+
return 0;
36+
}

0 commit comments

Comments
 (0)