算法第1篇——选择排序

来源:互联网 发布:sql应用开发培训 编辑:程序博客网 时间:2024/06/18 15:24

选择排序的C++代码:

template<typename T>void selectionSort(T arr[], int n) {    for (int i = 0; i < n; i++) {        //寻找[i, n)区间里的最小值        int minIndex = i;        for (int j = i + 1; j < n; j++) {            if (arr[j] < arr[minIndex]) {                minIndex = j;            }        }        swap(arr[i], arr[minIndex]);    }}

在开始之前,自己根据上面的代码演算一遍。

选择排序

选择排序的总体思路:选择最小的元素放在第1位,再选择次小的元素放在第2位…

上面代码中,内层循环就是用来寻找最小元素的:

//寻找[i, n)区间里的最小值int minIndex = i;for (int j = i + 1; j < n; j++) {    if (arr[j] < arr[minIndex]) {        minIndex = j;    }}

每次寻找次小元素时,并不都是从索引为0的位置开始,而是承接上次外层循环中i的位置,因为i之前的元素都是已排序的。

找到次小元素之后,再将这个次小元素与i元素交换:

swap(arr[i], arr[minIndex]);

动画演示

https://visualgo.net/zh/sorting

原创粉丝点击