- 执行流程
- 从序列中找出最大的那个元素,然后与末尾元素交换位置。(执行完一轮后,最末尾的那个元素就是最大的元素)
- 忽略1中找到的最大元素,重复执行步骤1
for (int end = array.length - 1; end > 0; end--) {
int max = 0;
for (int begin = 1; begin <= end; begin++) {
if (cmp(max, begin) < 0) {
max = begin;
}
}
swap(max, end);
}
- 选择排序的交换次数要远远小于冒泡排序,平均性能优于冒泡排序
- 最好、最坏、平均时间复杂度:O(n2),空间复杂度:O
网友评论