Sparse Recovery by Semi-Iterative Hard Thresholding Algorithm