If there is a unique id, then it is easy:
while (@id is not null) select @id = min(id) from table where id > @idand continue until you get null.
You assumption is correct
I added a simple "select @minid" to the code above and constructed a similar cursor example. Then I ran the two algorithms on a table with 77000 rows. They both completed in 48 secs (you need an index on id, of course).
Are you looking for something even faster, or is there a different reason for not using cursors?