主要内容 #
- 选择步骤
- 排列奇数
- 排列数组
1. 选择排序步骤 #
1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3. 重复第二步,直到所有元素均排序完毕。
2. 排列奇数 #
题目描述
给定一个长度为n(不大于500)的正整数序列,请将其中所有的奇数取出,并按照升序输出;
输入
第一行为n。
第二行有n个正整数,中间用空格分开。
输出
以增序的方式输出基数序列。数据至少保证有一个奇数。
样例输入
10
1 3 2 6 4 9 8 7 10 5
样例输出
1 3 5 7 9
参考程序
#include < iostream > #include < string > using namespace std; nt main(){ //接收数据 int accept[1001] = {0}; int n; cin >> n; int i = 0; while(n--){ //接收数据 int num; cin >> num; //如果是奇数就存储下来,i存贮数据的长度 if(num % 2 == 1){ accept[i] = num; ++i; } } //进行选择排序 for(int j = 0; j < i - 1; ++j){ //记录当前最小值的下标 int min = j; for(int k = j + 1; k < i; ++k){ //找到更小的记录 if(accept[min] > accept[k]){ min = k; } } swap(accept[j], accept[min]); } //输出 for(int j = 0; j < i; ++j){ cout << accept[j] << ' '; } return 0; }
2. 排列数组 #
题目描述
输入n整数,排序后并输出。
输入
第一行一个整数n,表示要排序的数个数。
第二行n个元素,表示待排序的元素。
数据范围:1≤n≤1000,序列中的元素范围在[-10^6,10^6]之间。
输出
输出n个数字,表示排序后的数字。
样例输入
5
-1 2 1 4 3
样例输出
-1 1 2 3 4
参考程序
#include < iostream > using namespace std; void selectSort(int *nums,int n) { for(int i=0;i<n-1;i++) { int min=i; for(int j=i+1;j<n;j++) { if(nums[j]<nums[min]) min=j; //找出最小值 } swap(nums[min],nums[i]); } } int main() { int nums[1001]; int n; cin>>n; for(int i=0;i<n;i++) { cin>>nums[i]; } selectSort(nums, n); for(int i=0;i<n;i++) { if(i != n - 1){ cout << nums[i] << " "; } else { cout <<nums[i] << endl; } } return 0; }