Finite cover for $[0,1]$ $F=[0,1] \subset \bigcup B_{r_j}(x_j)$ where $\{x_j\}$ is an arbitrary enumeration of rational numbers in $[0,1]$. $[0,1]$ is compact and thus must have a finite cover. $B_{r_j}(x_j)$ is an open ball around $x_j$ with radius $r_j$.
Please show how to "extract" a finite cover from $\bigcup B_{r_j}(x_j)$.
Note that there is no $r>0$ such that $r_j>r$ $\forall j$ . 
 A: Given a countable covering $\{U_1, U_2, \ldots\}$ of a compact space, there is an easy algorithm to find a finite subcover: Check if $\{U_1\}$ is a cover, then check if $\{U_1,U_2\}$ is a cover, and so on.  Compactness guarantees that this process will terminate.
It is unlikely that we can do much better than this, at least without further properties of the cover.  You've written down a cover by open intervals that is basically arbitrary except that they have rational midpoints.
A: This is a (possibly) more efficient variation on Slade's algorithm elsewhere in this thread.


*

*Let $x$ be the smallest point not yet covered; initially $x=0$.

*Let $S$ be a partial finite subcover, initially $\emptyset$

*Let $L$ be a list of the open intervals considered so far, initially $\emptyset$

*Repeat until $x>1$:

*

*If $L$ contains an interval $(a,b)$ with $x\in (a,b)$ then

*

*Insert $(a,b)$ into $S$

*Set $x=b$


*If not, then read another interval from the open cover and add it to $L$.


*$S$ now contains a finite open cover of $[0,1]$ that is a subcover of the given cover.


The test "If $L$ contains..." is finite; it needs only examine the finite list $L$.
The outer repeat loop must terminate because $[0,1]$ is compact.
The algorithm is therefore guaranteed to terminate in finite time  if presented with an open cover of $[0,1]$.
There is an obvious optimization: after reading an interval and adding it to $L$, skip the “if $L$ contains an  interval…” test unless $x$ is a member of the latest interval.
