We consider the problem of computing exact or approximate minimum cycle bases of an undirected (or directed) graph G with m edges, n vertices and nonnegative edge weights. In this problem, a {0, 1} ({−1, 0, 1}) incidence vector is associated with each cycle and the vector space over F 2 (Q) generated by these vectors is the cycle space of G. A set of cycles is called a cycle basis of G if it forms a basis for its cycle space. A cycle basis where the sum of the weights of the cycles is minimum is called a minimum cycle basis of G. Cycle bases of low weight are useful in a number of contexts, for example, the analysis of electrical networks, structural engineering, chemistry, and surface reconstruction.There exists a set of (mn) cycles which is guaranteed to contain a minimum cycle basis. A minimum basis can be extracted by Gaussian elimination. The resulting algorithm [Horton 1987] was the first polynomial-time algorithm. Faster and more complicated algorithms have been found since then.We present a very simple method for extracting a minimum cycle basis from the candidate set with running time O(m 2 n), which improves the running time for sparse graphs. Furthermore, in the undirected case by using bit-packing we improve the running time also in the case of dense graphs. For undirected graphs we derive an O(m 2 n/ log n + n 2 m) algorithm. For directed graphs we get an O(m 3 n) deterministic and an O(m 2 n) randomized algorithm.Our results improve the running times of both exact and approximate algorithms. Finally, we derive a smaller candidate set with size in (m) ∩ O(mn).