题目的主要信息:

  • 输入nn个整数进入数组,对其进行选择排序使之呈现从小到大后再输出

具体做法:

选择排序就是从数组最开始的位置开始,每次选出后续最小的元素放在那里,然后进入下一位,继续选后续最小,直到数组结束,这样就能排出从小到大的次序。

alt

#include <iostream>
using namespace std;

int main() {

	int arr[6] = { 0 };
	int len = sizeof(arr) / sizeof(int);
	
	for (int i = 0; i < len; i++) {
		cin >> arr[i];
	}
    for(int i = 0; i < len; i++){
        int min = arr[i]; //准备一个最小数
        for(int j = i + 1; j < len; j++){ //遍历后续找到最小值
            if(arr[j] < min)
                swap(min, arr[j]);
        }
        arr[i] = min; //更新该位置为后续最小
    }
    for(int i = 0; i < len; i++) //输出
        cout << arr[i] << " ";
	return 0;
}

复杂度分析:

  • 时间复杂度:O(n2)O(n^2),一共nn轮选择,每轮要比较O(n)O(n)
  • 空间复杂度:O(1)O(1),无额外空间