题意整理。
- 键盘随机输入6个整数,保存到数组中。
- 使用选择排序对数组中的元素进行排序,输出排序后的元素。
方法一(选择排序)
1.解题思路
- 外层循环遍历前len-1个元素,内层循环中,使用临时遍历min记录最小值所在下标,遍历当前元素后面所有元素,比较得出最小值所在下标。
- 每次内层循环走完,交换i、min位置元素。
动图展示:
2.代码实现
#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];
}
//外层循环遍历前len-1个元素
for(int i=0;i<len-1;i++){
//使用临时遍历min记录最小值所在下标
int min=i;
//遍历当前元素之后所有元素,比较得出最小值所在下标
for(int j=i+1;j<len;j++){
if(arr[min]>arr[j]){
min=j;
}
}
//交换i、min位置元素,即把当前最小值移到i所在位置
int temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
return 0;
}
3.复杂度分析
- 时间复杂度:循环最多执行次,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。