Rewriting codes have found nice applications in solid-state memories, including flash memories and phase-change memories. They help the memories rewrite data efficiently, such as by avoiding block erasures. Variously aspects of rewriting codes have been studied, including the achievable rates, specific codes, and code constructions for lots of rewrites. However, in many applications, rewriting codes of high rates are needed. In addition, efficient rewriting algorithms are also necessary. In this work, we present rewriting codes of efficient rewriting algorithms. We show that they can achieve higher rates in a number of cases than known results.