## What is the difference?

There is a big difference between these two types of notation, which can be confusing for those who are new to computer science. In general, the “O” in Big O notation is used to describe the worst-case scenario for an algorithm, while the “Ω” is used to describe the best-case scenario. The difference between these two notations is often referred to as “asymptotic worst-case analysis.”

## Why is it important to know the difference?

There are two main types of time complexity: big-O notation and big-Theta notation. It’s important to know the difference between them because they describe two very different things.

Big-O notation is used to describe the worst-case scenarios for an algorithm. In other words, it describes how long an algorithm will take to run if it has to process a large amount of data.

Big-Theta notation is used to describe the average-case scenarios for an algorithm. In other words, it describes how long an algorithm will take to run if it has to process a typical amount of data.

So, why is it important to know the difference? Well, if you’re only interested in the worst-case scenarios, then you only need to know about big-O notation. However, if you’re interested in the average-case scenarios, then you’ll need to know about both big-O and big-Theta notation.

## When to use “on”

There are a few different situations where you might see the terms “on” and “onlogn” used. In general, these terms refer to the speed of an algorithm, with “on” meaning that the algorithm takes a constant amount of time to run, regardless of the size of the input. Meanwhile, “onlogn” means that the algorithm’s run time grows logarithmically with the size of the input.

Here are a few specific situations where you might see these terms used:

- Big O notation: In computer science, Big O notation is often used to describe the speed of an algorithm. In this context, “on” would be used to describe an algorithm that takes a constant amount of time to run (i.e. it is not affected by the size of the input).
- Sorting algorithms: There are a variety of algorithms that can be used to sort data, and their efficiency can be described using on and onlogn notation. For example, quicksort is typically described as being “onlogn”, while insertion sort is usually considered to be “on”.
- Searching algorithms: Similarly to sorting algorithms, there are multiple algorithms that can be used for searching, with varying efficiencies. For example, binary search is typically considered to be “onlogn”, while linear search is generally “on”.

When to use “onlogn”

In computer science, the time complexity of an algorithm is commonly expressed using the big O notation. In general, we use the “O” notation to describe how an algorithm’s runtime varies with respect to the size of its input.

There are a few different ways to express time complexity using the O notation. In this article, we’ll focus on two of them: “O(n)” and “O(nlogn)”.

The difference between these two notations is subtle, but it’s important to understand when you should use each one. Here’s a quick overview:

- O(n) describes an algorithm whose runtime is proportional to the size of its input (n).
- O(nlogn) describes an algorithm whose runtime is proportional to the product of the size of its input (n) and the logarithm of its input (logn).

In general, you should use O(nlogn) when you can express your algorithm’s runtime as a product of n and logn. For example, if your algorithm sorts an array of n elements, you can express its runtime as O(nlogn), because sorting an array takes O(nlogn) time in the best case and in the worst case.

## How to remember the difference

There is a simple way to remember the difference between these two terms. Just think of the “on” in “onlogn” as meaning “time.” So, “onlogn” means the time it would take to do an operation if you had an unlimited amount of time. In contrast, “on” simply means the time it would take to do an operation if you were limited to one second.