You are on page 1of 3

1.

4nlogn + 2n = O(nlogn)
2^10 = O(1)
2^log(n) = O(n)
3n+100logn = O(n)
4n = O(n)
2^n = O(2^n)
n^2 + 10n = O(n^2)
n^3 = O(n^3)
nlogn = O(nlogn)

Sort ascending order: 2^10, 2^log(n), 3n+100logn, 4n, nlogn, 4nlogn + 2n, n^2 +
10n, n^3, 2^n

2.
algorithm 1:
power(a, b) {
result = 1;
for(int i = 1; i <= b; i++) {
result *= a;
}
result;
}
Độ phức tạp của algorithm 1 là O(n).
algorithm 2:
square(int x) {
return x*x;
}

pow(a, b) {
if (b == 0) return 1;
else
if (b % 2 == 0)
return square(pow(a, b/2));
else
return a * (square(pow(a, b/2)));
}
Độ phức tạp của algorithm 2 là O(logn).

3.
queue[];
front = rear = 0;
capacity = sizeOfQueue;
queue = new int[capacity];
enQueue(val) {
if(rear==c) {
print "Queue is full";
}
else {
arr[rear] = val;
rear++;
}
}
deQueue() {
if(rear==0) {
print "Queue is empty";
}
else {
(i=0->rear-1) {
arr[i] = arr[i+1];
i++;
}
arr[rear] = 0;
rear--;
}
}
Độ phức tạp của EnQueue : O(1)
Độ phức tạp của DeQueue : O(n)

4.
struct linked list {
data;
*next;
}

enQueue(val) {
if(front==NULL) {
front = rear = val;
}
rear->next = val;
rear = val;
}

deQueue() {
if(front==NULL) {
return;
}
front = front->next;
if(front==NULL) {
rear = NULL;
}
}

Độ phức tạp của EnQueue : O(1)


Độ phức tạp của DeQueue : O(1)

5.
queue[];
front = rear = 0;
capacity = sizeOfQueue;
queue = new int[capacity];
enQueue(val) {
if(rear==capacity) {
print "Queue is full";
}
else {
arr[rear] = val;
rear++;
}
}

Độ phức tạp của EnQueue : O(1)


Độ phức tạp của DeQueue : O(1)

deQueue() {
if(rear==0) {
print "Queue is empty";
}
else {
arr[rear] = 0;
rear--;
}
}

6.
struct linked list {
data;
*next;
}

enQueue(val) {
if(head==NULL) {
head = rear = val;
}
rear->next = val;
rear = val;
}

deQueue() {
if(head==NULL) {
print "Queue is empty";
}
ptr = head;
while(ptr->next!=NULL) {
ptr = ptr->next;
}
delete ptr;
}

Độ phức tạp của EnQueue : O(1)


Độ phức tạp của DeQueue : O(n)

You might also like