十大排序算法之二(选择排序)

#include 
using namespace std;

void selection_sort(int* arr, int n)
{
    int index;
    for (int i = 0; i < n; i++)
    {
        index = i;
        for (int j = index + 1; j < n; j++)
        {
            if (arr[j] < arr[index])
            {
                swap(j, index);
            }
            
        }
        if (i != index)
        {
            swap(arr[i], arr[index]);
        }
    }
    /*
    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]);
        }
    */
}

int main() {
    int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };
    int len = (int)sizeof(arr) / sizeof(*arr);
    selection_sort(arr, len);
    for (auto& a : arr) cout << a << ' ';
    cout << endl;
    return 0;
}

你可能感兴趣的:(南邮计算机考研,数据结构,排序算法,算法,数据结构)