Data Structures - Assignment 4: Tarviha Fatima 15L-4204 Section: A
Data Structures - Assignment 4: Tarviha Fatima 15L-4204 Section: A
15L-4204
Section: A
1) Find Min
Recurrence Relation:
T(n) = {1 T(n-1) + 1}
Big-Oh:
T(n) = T(n-2) + 2
T(n) = T(n-3) + 3
If k;
T(n) = T(n-k) + k
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 1 + n 1
Recurrence Relation:
T(n) = {1 T(n/10) + n}
Big-Oh:
T(n) = T(n/102) + 2n
T(n) = T(n/103) + 3n
If k;
T(n) = T(n/10k) + kn
Now, T(1) = 1
T(n/10k) = 1
n / 10k = 1
k = log10(n)
T(n) = 1 + nlog10(n)
int sumOfDigits(int n)
{
if (n == 0)
{
return 0;
}
int x = n % 10;
n = n / 10;
x += sumOfDigits(n);
}
Recurrence Relation:
T(n) = {1 T(n/10) + 1}
Big-Oh:
T(n) = T(n/102) + 2
T(n) = T(n/103) + 3
If k;
T(n) = T(n/10k) + k
Now, T(1) = 1
T(n/10k) = 1
n / 10k = 1
k = log10(n)
T(n) = 1 + log10(n)
4) Palindrome
Recurrence Relation:
T(n) = {1 T(n-1) + 1}
Big-Oh:
T(n) = T(n-2) + 2
T(n) = T(n-3) + 3
If k;
T(n) = T(n-k) + k
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 1 + n 1
5) Count Paths
Recurrence Relation:
T(n) = {1 2T(n-1) + 1}
Big-Oh:
T(n) = 22T(n-2) + 2
T(n) = 23T(n-3) + 3
If k;
T(n) = 2kT(n-k) + k
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 2n-1 + n - 1
6) Binary Search
Recurrence Relation:
T(n) = {1 T(n/2) + 1}
Big-Oh:
T(n) = T(n/22) + 2
T(n) = T(n/23) + 3
If k;
T(n) = T(n/2k) + k
Now, T(1) = 1
T(n/2k) = 1
n / 2k = 1
k = log2(n)
T(n) = 1 + log2(n)
7) Tower of Hanoi
Recurrence Relation:
T(n) = {1 2T(n-1) + 1}
Big-Oh:
T(n) = 22T(n-2) + 2
T(n) = 23T(n-3) + 3
If k;
T(n) = 2kT(n-k) + k
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 2n-1 + n - 1
8) Merge Sort
int i = 1, j = 1;
for (int k = low; k <= high; k++)
{
if (left[i] <= right[j])
{
arr[k] = left[i];
i++;
}
else
{
arr[k] = right[j];
j++;
}
}
}
void main()
{
int size;
cout << "Enter the size of the array" << endl;
cin >> size;
int *arr = new int[size];
MergeSort(arr, 1, size);
Recurrence Relation:
T(n) = {1 2T(n/2) + n}
Big-Oh:
T(n) = 22T(n/22) + 2n
T(n) = 23(n/23) + 3n
If k;
T(n) = 2kT(n/2k) + k*n
Now, T(1) = 1
T(n/2k) = 1
n / 2k = 1
k = log2(n)
T(n) = n + n*log2(n)
9) Eight Queens
int n = 1;
void main()
{
int SIZE = 8;
int *t = new int [SIZE];
cout << "Possible Solutions:\n\n";
cout << " a b c d e f g h\n\n";
check(t, 0);
system("pause");
}
Recurrence Relation:
T(n) = {1 T(n-1) + 1}
Big-Oh:
T(n) = T(n-2) + 2
T(n) = T(n-3) + 3
If k;
T(n) = T(n-k) + k
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 1 + n 1
vector<int> temp;
vector< vector<int> > stack;
if (k == 1)
{
for (int i = curr; i<n; i++)
{
temp.push_back(arr[i]);
stack.push_back(temp);
temp.pop_back();
}
}
return result;
}
int main()
{
int arr[] = { 1,2,3,4,5 };
int k = 3;
int n = sizeof(arr) / sizeof(arr[0]);
_getch();
}
Recurrence Relation:
T(n) = {1 T(n-1) + n}
Big-Oh:
T(n) = T(n-2) + 2n
T(n) = T(n-3) + 3n
If k;
T(n) = T(n-k) + kn
Now, T(1) = 1
T(n-k) = 1
n k = 1
k = n 1
T(n) = 1 + (n 1)(n)