1. A method implemented in a receiver of estimating an unknown spreading code in a received signal; said unknown spreading code comprising a plurality of chips; said method comprising: (A) selecting an initial code; and (B) performing an estimation of said unknown spreading code by performing a number of iterations, wherein for each said iteration a new generation of a seed pool is created, and wherein each said generation of said seed pool comprises a plurality of estimates of said unknown spreading code; and wherein for each said iteration, wherein at least one said estimate of said unknown spreading code in said seed pool is tested against said target unknown spreading code and is assigned metric by: (a) introducing a survivor threshold; (b) performing a sorting operation to sort said plurality of said estimates of said unknown spreading code in a rank order of the assigned metrics; (c) determining a survivor count; and (d) keeping each said estimate of said unknown spreading code in said seed pool having a rank higher than said survivor threshold; wherein said survivor count is a number of said estimates of said unknown spreading code each of which includes a metric that exceeds said survivor threshold; and wherein said survivor count is said number of said estimates of said unknown spreading code that is carried forward to the next generation; said survivor count number being an integer less than or equal to said pool size of said plurality of estimates of said unknown spreading code.