This webpage presents "Space-efficient algorithm for computing a Centerpoint of a point Set in 2D" paper  published in Canadian Conference on Computational Geometry in 2014. The algorithm computes a Centerpoint of a pointset in two dimensions. The restriction for this algorithm is that the points are in read-only array. However, it works space efficiently. The running time in asymptotic notation is O(T(n2)log2n) and the extra space the algorithm uses is O(S(n2)).
Cole et al presented an algorithm on k-hulls  whit running time O(nlog5n) in ACM annual symposium on Theory of computing in 1984. Jiri Matousek presented an algorithm "Computing the Center of Planar Point Sets". The running time was O(nlog4n). Then, in 1990 N. Naor and M. Sharir  extended this algorithm to 3 dimensions, presenting it in Canadian Conference on Computational Geometry. Finally, in 1993 “Computing a Centerpoint of a finite planar set of points in linear time”  algorithm was presented by S. Jadhav and A. Mukhopadhyay.
In discrete geometry, The k-center of a set P of n points in 2D (2 dimensions) is the set C of points in 2D such that for any half-plane that passes through a point c ∈ C contains at least k points. The set C is said to be k-hull of the points in P, and any point c ∈ C is called a k-Centerpoint of P.  See figure 1.1 (k=1 in this case) More about Centerpoints see , and k-center see .
For this algorithm we assume that the point set P in plane is given in read-only array. The further process is done on dual plane . The running time is O(T(n2)log2n) and the additional space used is O(S(n2). T(n) and S(n) are time and space complexity respectfully and n is the points stored in an array. H. Edelsbrunner in his book (“Algorithms in Combinatorial Geometry” ) presented the proof that k Centerpoint always exists when k = ⌈n/3⌉ in 2 dimensions.
The easiest way of computing k-Centerpoint is as follows:
Note: The Centerpoint doesn’t always exist depending on k. It always exists if k = ⌈n/3⌉ in 2D.
Generation of Lk
We first find the kth vertex of intersection of lines P´
scanning the A(P´) from the bottom.
This point we denote vk0 .
vk0 is on the VL which is left most
vertical line of
Lk . Now we have Lk and λk .
Next, we find line l ∈ P´ and edge e ∈ Lk that is on l and the point vk0 is adjacent to e.
The complexity of Lk generation is O(n2k1/3) and this operation uses O(1) extra space 2.1.
Algorithm in details
Step 1 Find the vertex u ∈ A(P´)
such that the x
coordinate of u is the median of the vertexes in A(P´). We
use a suitable
algorithm from the Table above for this step.
Step 2 Find edge e ∈ λk such that e intersects vertical line that passes through point u found in the previous step. We have point a and b that are end points of edge e and a line l such that edge e is on line l. (This step is executed by using Algo-Bridge described in details in the paper 3.2) and briefly below.
Step 3 if line l does not intersect λk return l. In this case, dual line l is the k-Centerpoint presenting the point in primal plane.
Step 3.1 if e intersect λ(n-k) than return failure. (The Centerpoint does not exist).
Step 3.2 if line l passes through λ(n-k) from left a ∈ k and to the right of b ∈ e than return failure. (The Centerpoint does not exist).
Step 3.3 if line l intersects λ(n-k) in the right from b we repeat the process from step 1 to the right of b in A(P´)
Step 3.4 if line l intersects λ(n-k) in the left from a we repeat the process from step 1 to the left of a in A(P´)
Note: These are recursive calls and in each step we proceed with constant number of elements, the recursive calls take O(logn) time.
We can have a situation where the lines that have edges incident to u ∈ λ(k) intersects λ(n-k) but they don’t intersect λ(k) than this implies that we can draw tangent of λ(n-k) from only one vertex c ∈ λ(k) If there is a line containing the tangent we return it as dual of k-Centerpoint.
This Algorithm finds a bridge edge on λk that intersects with vertical line V that was drawn on a vertex of A(P´).
Given a point z on a vertical line V , one can compute the tangent of Lk from the point z in one side of the vertical line V in O(T(n2) log n) time using S(n2) workspace. Lema6
Algo – Bridge works based on Megido’s  algorithm which computes ham-sandwich cut  L. It finds line L such that the quantity of the points that are left and right of the L are equal. After finding L we find 2 points let say point α and β, that are on different sides of the L. Next, we compare the slope π of the line passing through α and z and slope of the line π* passing trough z and β. If π = π* then this is the desired bridge. If π ≠ π*, then we prune the points during next iteration until finding desired points.
The input of this algorithm is set of P points and an integer k, we find the k-Centerpoint (if exists) in ;O(T(n2)log2n) time and using O(S(n2) extra space.
The steps that are the upper bounds of this algorithm are
Overall time complexity is O(T(n2)log2n).
For finding centerpoint using this application
This application works for k=1 only.
Asymptotic Notation (according to Wicipedia
In computer science, big O notation is used to classify algorithms   by how they respond e.g., in their processing time or working space requirements) to changes in input size. In analytic number theory, it is used to estimate the "error committed" while replacing the asymptotic size, or asymptotic mean size, of an arithmetical function, by the value, or mean value, it takes at a large finite argument.
Big O notation characterizes functions according to their growth rates: different functions with the same growth rate may be represented using the same O notation. The letter O is used because the growth rate of a function is also referred to as order of the function. A description of a function in terms of big O notation usually only provides an upper bound on the growth rate of the function. Associated with big O notation are several related notations, using the symbols o, Ω, ω, and Θ, to describe other kinds of bounds on asymptotic growth rates.
Read more here
In the 2 dimensional plain we denote a point with its x and y coordinates. (p = (px, py)) and line can be denoted in 2 parameters: the slope and the intersection with y axis. We can map some set of point to set of lines. In the figure below points p1, p2, and p3 from primal plane to the left are transformed to lines in dual plane. The point p from primal plane is transformed to line p* by given formula: (p* := (y=pxx - py)).
More about duality you can find in the references .