选择排序

#include <iostream>
#include <vector>
using namespace std;
/**
 * 选择排序
 * 首先找到数组中最小的元素和第一个元素进行交换
 * 再次找到剩下的数组元素中最小的元素和第二个元素进行交换
 * 以此类推
 *
 * 算法性能:1.运行时间与输入无关,
 *         2.数据移动是最少的
 *         对于N个元素的数组,选择排序大约需要(N^2)/2次比较和N次交换。
 * @param nums
 */
void SelectionSort(vector<int>& nums){
    for(int i = 0;i < nums.size();i++){
        int minIndex = i;       //最小元素索引
        for(int j = i + 1;j < nums.size();j++){
            if(nums[minIndex] > nums[j]){
                minIndex = j;
            }
        }
        int temp = nums[i];
        nums[i] = nums[minIndex];
        nums[minIndex] = temp;
    }
}

int main() {
    int a[]  = {7,6,5,4,3,2,1};
    vector<int> nums(a,a+7);
    SelectionSort(nums);
    for(int i = 0;i < nums.size();i ++){
        cout<<nums[i]<<endl;
    }
    return 0;
}


posted @ 2023-02-02 22:33  破忒头头  阅读(22)  评论(0)    收藏  举报