From 2994b877ebcf4223ee355cd405ae23f808dacc83 Mon Sep 17 00:00:00 2001 From: nsh2207 Date: Thu, 2 Jan 2025 17:11:15 -0500 Subject: [PATCH 1/5] Implemented Binary search --- Exercise_1.cpp | 10 +++++++++- test_program_1 | Bin 0 -> 33627 bytes 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100755 test_program_1 diff --git a/Exercise_1.cpp b/Exercise_1.cpp index a6dc14cc..5cde0ebd 100644 --- a/Exercise_1.cpp +++ b/Exercise_1.cpp @@ -3,9 +3,17 @@ // A recursive binary search function. It returns // location of x in given array arr[l..r] is present, // otherwise -1 +using namespace std; int binarySearch(int arr[], int l, int r, int x) { - //Your Code here + int mid = l+(r-l)/2; + if(l==r){ + if(arr[l]==x) return l; + else return -1; + } + if(arr[mid]==x) return mid; + if(arr[mid]>x) return binarySearch(arr,l,mid-1,x); + return binarySearch(arr,mid+1,r,x); } int main(void) diff --git a/test_program_1 b/test_program_1 new file mode 100755 index 0000000000000000000000000000000000000000..516dc00d265843af0d25df5affc9e1a85b96ba13 GIT binary patch literal 33627 zcmeI5e@s(X6vyvt=_sHAN`m4x`iE2eF%;dRF2Ow%GTa;zaS1w;YoP@?ps=<~5SL-l znc>=wq+@pC9P(O;UC2e*!SG`3Z-nCWy$_J zCpqulbI!fzp8I+4-+SNp5C522AcQ6$7U*K=nG_+83kP~aEQ6LqrK~J@sce7Qp55e~ zD{Asw*F1~z+`>R9_m)-fof}s3^|?M_+BUf3N+YBUxZ4BNGbA}*d9ksX6xs}gY_n@P zQbd>0F`iQT18p__8CPmYO5TPRwUF^MRofDQjE2{@DVP^SR7?Ip%n>6Z4tw znFjg%0iVZPZ+epRwVV0SC?Pvhl5R< zkDyYPmh3H&J9bx88E;oNKPt3Jl3FXAr1b8ypi=UMVZxX;dZX?a%q%V3WK~#Xu;g;>r@@In1E?XkIUxO{U!oyAn37Ni{`bQw;}? zLeXYGDV`|tJ)27l%2~{#0Cu0_>0Sv~DvUW<%?4fKp6x zF8LK@YO}SVp4zo*3yTU-l&413xg}w|)wOEg_^J+nz};N9-JF8aLac;RJ&`UU>}Xe; zHt{8S3QF-Ia5`;lirg$rfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zm`7mxsu-EfCPp(wcq~JNZ>NfIG*b`9GW75rw5zrB#+OCcp4AI)Y=K;FJ=Yv}!?|@4R5Q=@WKMpBU)Qf1rWObiN3~ z-)j#R2Zc6N98o;GitX8`VUq|CU`%wm2$ySUbHQ%8Sy!$e?#H^3CGaf)E1M`Hmcu41 zys%yoDGufd(MNU1FeYkE`z&S^!2(T8sQAHcL7ac@qq;-g@M)t^i}gbIN4Og0?f=( zvtbw|p~>o^eAKG5z1WyC`N0I3025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC>C>1RPkY5_$kicLW%B0iXk+I}74M|Nf4P>g)L9xgPfz^DMYP zz=EH6TXw-OrSu1!wT-g2p;6X3Jxy~x^=(d{OUPFI-ab$lPoqh()hdP$BgOurjWr&x z)7MeucKT`?Dm@TkYi^M4c6V)Cz%3ixPM6y!o>!L^SfogAc6z*`)GF>BiKiPrJYYoO z$i&9zZUovN{U1J4!z~REvY&-goc?=GHvaQYt(uFjC`+=dlWgLKJ0WK7d7wUt16%&v zeMmWfBU07>uc$rzZNU&KJ&mQPY?2)KP`7qMSn&2NY7h1BQ^_Q_{^ID6!=irCZg?K~ z)Z;AgpwXM_Lw>FO!ExJ5)ao@4;R;)Vz z&gU1aTfU9e4W;}vGSX<-U2U5_^3{>U$A7+bvi!YupFS>LS1^A6t>1T)S5-_NOPd;t zY`DJk?)e`+9#6gVi}mDaxXrgHc52)f8eCSgr0~v_8%KvnE}YBRnfuAImG{$PJ(nYo r%l}{F=l(ofHr4Y*=eqraRcj7x@A)9RTfZ{=?%O{G2Tr84Hoox}Z?r#q literal 0 HcmV?d00001 From 58e2f6c60bcdf82a267650ea07e0a5526f069c94 Mon Sep 17 00:00:00 2001 From: nsh2207 Date: Thu, 2 Jan 2025 17:48:59 -0500 Subject: [PATCH 2/5] Implemented Quick sort Exercise_2 --- Exercise_2.cpp | 18 ++++++++++++++++++ test_program_2 | Bin 0 -> 40843 bytes 2 files changed, 18 insertions(+) create mode 100755 test_program_2 diff --git a/Exercise_2.cpp b/Exercise_2.cpp index c90e577e..be11728e 100644 --- a/Exercise_2.cpp +++ b/Exercise_2.cpp @@ -1,10 +1,14 @@ #include +#include using namespace std; // A utility function to swap two elements void swap(int* a, int* b) { //Your Code here + int temp = *a; + *a = *b; + *b = temp; } /* This function takes last element as pivot, places @@ -15,6 +19,16 @@ of pivot */ int partition (int arr[], int low, int high) { //Your Code here + int i = low, j = low; + while(j<=high-1){ + if(arr[j]<=arr[high]){ + swap(&arr[i],&arr[j]); + i++; + } + j++; + } + swap(&arr[i],&arr[high]); + return i; } /* The main function that implements QuickSort @@ -24,6 +38,10 @@ high --> Ending index */ void quickSort(int arr[], int low, int high) { //Your Code here + if(low>=high) return; + int low_part = partition(arr,low,high); + quickSort(arr,low,low_part-1); + quickSort(arr,low_part+1,high); } /* Function to print an array */ diff --git a/test_program_2 b/test_program_2 new file mode 100755 index 0000000000000000000000000000000000000000..c41c0fb35577e46022f94a3627e3a9159d397154 GIT binary patch literal 40843 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 Date: Thu, 2 Jan 2025 18:13:37 -0500 Subject: [PATCH 3/5] Exercise_3 completed --- Exercise_3.cpp | 13 ++++++++++++- test_program_3 | Bin 0 -> 40747 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100755 test_program_3 diff --git a/Exercise_3.cpp b/Exercise_3.cpp index 209ce0fe..1fdd9c87 100644 --- a/Exercise_3.cpp +++ b/Exercise_3.cpp @@ -1,4 +1,5 @@ -#include +#include +#include using namespace std; // Struct @@ -13,6 +14,16 @@ void printMiddle(struct Node *head) { //YourCode here //Use fast and slow pointer technique + Node* fast_ptr = head, *slow_ptr = head; + if(!head){ + cout<<"List is empty"; + return; + } + while(fast_ptr&&fast_ptr->next){ + fast_ptr = fast_ptr->next->next; + slow_ptr = slow_ptr->next; + } + cout<<"Middle element is: "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 Rk8fM;QQqud(0%;d{|5z+E&>1m literal 0 HcmV?d00001 From 649ffc74022b71cf440db6f541a697c0fcba5631 Mon Sep 17 00:00:00 2001 From: nsh2207 Date: Thu, 2 Jan 2025 18:15:33 -0500 Subject: [PATCH 4/5] Exercise_4 completed --- Exercise_4.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Exercise_4.cpp b/Exercise_4.cpp index 1a528ee6..0c94c0b0 100644 --- a/Exercise_4.cpp +++ b/Exercise_4.cpp @@ -7,6 +7,33 @@ void merge(int arr[], int l, int m, int r) { //Your code here + int n_final = r-l+1; + int temp[n_final]; + int p1 = l, p2 = m+1,temp_p = 0; + while(p1<=m&&p2<=r){ + if(arr[p1]<=arr[p2]){ + temp[temp_p] = arr[p1]; + p1++; + } + else{ + temp[temp_p] = arr[p2]; + p2++; + } + temp_p++; + } + while(p1<=m){ + temp[temp_p] = arr[p1]; + p1++; + temp_p++; + } + while(p2<=r){ + temp[temp_p] = arr[p2]; + p2++; + temp_p++; + } + for(int i=0;i=r) return; + int mid = l+(r-l)/2; + mergeSort(arr,l,mid); + mergeSort(arr,mid+1,r); + merge(arr,l,mid,r); } /* UTILITY FUNCTIONS */ From f44e62d668b97e2922083db776632c3583c336a4 Mon Sep 17 00:00:00 2001 From: nsh2207 Date: Thu, 2 Jan 2025 18:59:23 -0500 Subject: [PATCH 5/5] Implemented iterative version of quicksort using stacks and pairs Exercise_5 --- Exercise_5.cpp | 36 +++++++++++++++++++++++++++++++++++- test_program_4 | Bin 0 -> 33787 bytes test_program_5 | Bin 0 -> 80619 bytes 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100755 test_program_4 create mode 100755 test_program_5 diff --git a/Exercise_5.cpp b/Exercise_5.cpp index a07c2bf6..71659d1f 100644 --- a/Exercise_5.cpp +++ b/Exercise_5.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include using namespace std; // A utility function to swap two elements @@ -10,9 +13,20 @@ void swap(int* a, int* b) } /* This function is same in both iterative and recursive*/ -int partition(int arr[], int l, int h) +int partition(int arr[], int low, int high) { //Do the comparison and swapping here + //Your Code here + int i = low, j = low; + while(j<=high-1){ + if(arr[j]<=arr[high]){ + swap(&arr[i],&arr[j]); + i++; + } + j++; + } + swap(&arr[i],&arr[high]); + return i; } /* A[] --> Array to be sorted, @@ -21,6 +35,26 @@ h --> Ending index */ void quickSortIterative(int arr[], int l, int h) { //Try to think that how you can use stack here to remove recursion. + stack >params; + paircurr; + curr.first = l; + curr.second = h; + params.push(curr); + while(!params.empty()){ + paircurr = params.top(); + params.pop(); + int low = curr.first, high = curr.second; + if(low>=high) continue; + int low_part = partition(arr,low,high); + pairleft_curr; + left_curr.first = low; + left_curr.second = low_part-1; + pair right_curr; + right_curr.first = low_part+1; + right_curr.second = high; + params.push(left_curr); + params.push(right_curr); + } } // A utility function to print contents of arr diff --git a/test_program_4 b/test_program_4 new file mode 100755 index 0000000000000000000000000000000000000000..1ac0bce486c196d179c98f7068d2db4c0ad50132 GIT binary patch literal 33787 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ʨ)qdp9*|f;KKrkZ?fZa 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 aI&sovD^4$b;OK2nT=L1+a@YKA!T$xWANx@N literal 0 HcmV?d00001