Skip to content

Added sorting and few essential CPP code files in Data Structures, updated contributors file. #18

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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
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
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@

### Himanshu Maurya
- Github: https://github.com/mauryahimanshu

### Sharannyo Basu
- Github: https://github.com/sharannyobasu
30 changes: 30 additions & 0 deletions Data Structure/BubbleSort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include<iostream>
using namespace std;
void bubble(int a[], int n)
{
for (int i=1;i<n;i++)
{
for (int j=0;j<n-i;j++)
{
if(a[j]>a[j+1])
{
swap(a[j],a[j+1]);
}
}
}
}
int main()
{
int n, key, arr[1000],i;
cin>>n;
cout<<"Enter elements of the array : ";
for(i =0;i<n;i++)
{
cin>>arr[i];
}
bubble(arr,n);
for(i=0;i<n;i++)
{
cout<<arr[i]<<"\t";
}
}
32 changes: 32 additions & 0 deletions Data Structure/InsertionSort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include<iostream>
using namespace std;
void insertion(int a[], int n)
{
int i,j,e;
for(i=1;i<n;i++)
{
e=a[i];
j=i-1;
while(j>=0 && a[j]>e)
{
a[j+1]=a[j];
j--;
}
a[j+1]=e;
}
}
int main()
{
int n, key, arr[1000],i;
cin>>n;
cout<<"Enter elements of the array : ";
for(i =0;i<n;i++)
{
cin>>arr[i];
}
insertion(arr,n);
for(i=0;i<n;i++)
{
cout<<arr[i]<<"\t";
}
}
24 changes: 24 additions & 0 deletions Data Structure/Kadane's Algorithm.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[1000];
int cs=0;
int ms=0;
for (int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cs=cs+a[i];
if(cs<0)
{
cs=0;
}
ms=max(cs,ms);
}
cout<<"Maximum sum is : "<<ms<<endl;
}
24 changes: 24 additions & 0 deletions Data Structure/MoneyChangewithoutSTL.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include <iostream>
#include<algorithm>
using namespace std;

int main() {
int coins[]={1,2,5,10,20,50,100,200,500,2000};
int size=sizeof(coins)/sizeof(int);
int n,max;
cout<<"Enter total money : ";
cin>>n;
while(n>0)
{
int i,j;
for(i=0;i<size;i++)
{
if(n<coins[i])
{
cout<<coins[i-1]<<endl;
n=n-coins[i-1];
break;
}
}
}
}
24 changes: 24 additions & 0 deletions Data Structure/Pair Sum Problem.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include<iostream>
using namespace std;
int main()
{
int a,i,sum,n,j;
int arr[1000];
cin>>n;
for(i=0;i<n;i++)
{
cin>>arr[i];
}
cout<<"Enter sum : ";
cin>>sum;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(arr[j]+arr[i]==sum)
{
cout<<arr[i]<<" and "<<arr[j]<<endl;
}
}
}
}
87 changes: 87 additions & 0 deletions Data Structure/RadixSort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*Radix Sort Algorithm :

1. Radix Sort is a non-comparative sorting algorithm
2. It avoids comparison by creating and distributing elements into buckets
according to the radix
3. For elements with more than one significant digit, this bucketing process
is repeated for every digit, while preserving the ordering of prior step
untill all digits have been considered. So, Radix Sort is also called bucket
sort or digital sort.
4. Typically Radix sort uses counting sort as a subroutine to sort.
It has linear time complexity which is better than 0(n log n) of comparative sort algos.

Time Complexity : 0(n+k)
Space Complexity : O(n+k)

where n= no. of elements and k = range of inputs
*/

#include<iostream>
using namespace std;

void countingsort(int *arr, int n, int div1)
{
int output[n];
int count[10]={0};

for(int i=0;i<n;i++)
{
count[(arr[i]/div1)%10]++;
}
for(int i=1;i<10;i++)
{
count[i]+=count[i-1];
}
for(int i=n-1;i>=0;i--)
{
output[--count[(arr[i]/div1)%10]]=arr[i];
//count[(arr[i]/div1)%10]--;
}
for(int i=0;i<n;i++)
{
arr[i]=output[i];
}
}

void radixsort(int *arr, int n)
{
int m=arr[0];
for(int i=0;i<n;i++)
{
m=max(arr[i], m);
}
cout<<"Max is : "<<m<<endl;
for(int div1=1;m/div1>0;div1*=10)
{
countingsort(arr, n, div1);
}
}


int main()
{
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
cout<<"Before sorting : "<<endl;
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;

radixsort(arr, n); //radix sort called here

cout<<"After sorting : "<<endl;
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;


}
35 changes: 35 additions & 0 deletions Data Structure/SelectionSort.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include<iostream>
using namespace std;
void selection(int a[], int n)
{

for(int i=0;i<n-1;i++)
{
int min=i;
for(int j=i;j<n;j++)
{
if(a[j]<a[min])
{
min=j;
}
}
swap(a[i], a[min]);
}
}
int main()
{
int n, key, arr[1000],i;
cin>>n;
cout<<"Enter elelemnts of the array : ";
for(i =0;i<n;i++)
{
cin>>arr[i];
}
selection(arr,n);
for(i=0;i<n;i++)
{
cout<<arr[i]<<"\t";
}

}

24 changes: 24 additions & 0 deletions Data Structure/Wave Print 2D Array.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include<iostream>
using namespace std;
int main()
{
int a[1000][1000]={0};
int r,c,i,j;
cin>>r>>c;
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}