选择排序

工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋值给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换。

void select_sort(std::vector<int> &arr){
    for(int i = 0; i < arr.size() - 1; i++){
        int min = i;
        for(int j = i+1; j < arr.size(); j++){
            if ( arr[j] < arr[min]){
                min = j;
            }
        }
        std::swap(arr[i], arr[min]);
    }
}

 

posted on 2021-04-08 07:05  成长的皮球  阅读(42)  评论(0编辑  收藏  举报