较通用的选择排序，类似qsort