The convex hull $\mathcal{CH}(P)$ of a set of points $P$ is the convex polygon that contains all the points $P$.
The algorithm described on this page is commonly known as Graham's scan.
The following animation demonstrates the algorithm by showing all the intermediate steps.
The algorithm $\text{ConvexHull(}P\text{)}$ takes as input a set $P$ of points and
returns a list containing the vertices of $\mathcal{CH}(P)$ in clockwise order.
This is the pseudocode for the algorithm, as described in [1].
1. Sort the points in lexicographical order on the x and y coordinate,
resulting in a sequence p0, p1, ..., pn.
2. Put the points p0 and p1 in a list L_upper.
3. for i = 2 to n
4. append pi to L_upper
5. while L_upper contains more than two points and the last three points
in L_upper do not make a right turn
6. delete the middle of the last three points from L_upper.
7. Put the points p[n-1] and p[n-2] in a list L_lower with p[n-1] as the first point.
8. for i = n - 3 downto 0
9. append pi to L_lower
10. while L_lower contains more than two points and the last three points
in L_lower do not make a right turn
11. delete the middle of the last three points from L_lower.
12. Remove the first and the last point from L_lower to avoid duplication of the
points where the upper and lower hull meet.
13. Append L_lower to L_upper and call the result L.
14. Return L
[1] Computational Geometry - Algorithm and Applications, 3rd edition, section 1.1.
[2] Math StackExchange, How do I visualize if three points represent a right or left turn?, https://math.stackexchange.com/a/2121132