CPP2022-17-数组-选择排序(下)

简介: CPP2022-17-数组-选择排序(下)

裁判测试程序样例:

#include <iostream> using namespace std; int main() { void select_sort(int array[],int n); int a[10]={6,3,1,4,0,9,8,2,5,7},i; select_sort(a,10); for(i=0;i<10;i++) cout<<a[i]<<" "; cout<<endl; return 0; } /* 你的代码将被嵌在这里 */

输出样例:

0  1  2  3  4  5  6  7  8  9
1. void select_sort(int array[], int n)
2. {
3. for(int i=0;i<=n-2;i++)
4.     {
5. for(int j=i+1;j<=n-1;j++)
6. if(array[i]>array[j])
7.             {
8. int t=array[i];
9.                 array[i]=array[j]; 
10.                 array[j]=t;
11.             }  
12.     }
13. }

6-2 选择排序

分数 10

全屏浏览题目

切换布局

作者 王群芳

单位 合肥师范学院

题目描述

从键盘输入某班学生某门课程的成绩(每班人数最多不超过40人),当输入为负值时,表示输入结束。本题要求实现用选择排序法将分数从高到低排序(并输出每趟排序结果)的函数。

函数接口定义:

void DataSort(int score[], int n);

其中 score 是用户传入的学生成绩数组, n是学生人数。

裁判测试程序样例:

#include <stdio.h> #define N 40 int ReadScore(int score[]); void DataSort(int score[], int n); void PrintScore(int score[], int n); int main() { int score[N], n; n = ReadScore(score); printf("n=%d\n", n); if(n) { DataSort(score, n); printf("After sort: "); PrintScore(score, n); } return 0; } int ReadScore(int score[]) { int i = -1; do{ i++; scanf("%d", &score[i]); }while (score[i] >= 0); return i; } /* 请在这里填写答案 */ void PrintScore(int score[], int n) { int i; for (i=0; i<n; i++) { if (i!=0) printf(" "); printf("%d", score[i]); } printf("\n"); }

输入样例:

64 85 73 99 92 -1

输出样例:

1. n=5
2. 第1趟:99 85 73 64 92
3. 第2趟:99 92 73 64 85
4. 第3趟:99 92 85 64 73
5. 第4趟:99 92 85 73 64
6. After sort: 99 92 85 73 64
1. void DataSort(int score[], int n)
2. { 
3. int i=0;int max,temp;
4. for(i=0;i<n-1;i++)
5.     {  max=i;
6. for( int j=i+1;j<n;j++)
7.        {
8. if(score[j]>score[max])
9.            {
10.                max=j;
11.            }
12.        }
13.         temp = score[max];  
14.         score[max] = score[i];
15.         score[i] = temp;
16. printf("第%d趟:",i+1);
17. PrintScore(score, n);
18.     }
19. }

6-3 使用函数的选择法排序

分数 10

全屏浏览题目

切换布局

作者 张泳

单位 浙大城市学院

本题要求实现一个用选择法对整数数组进行简单排序的函数。

函数接口定义:

void sort( int a[], int n );

其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。

裁判测试程序样例:

#include <stdio.h> #define MAXN 10 void sort( int a[], int n ); int main() { int i, n; int a[MAXN]; scanf("%d", &n); for( i=0; i<n; i++ ) scanf("%d", &a[i]); sort(a, n); printf("After sorted the array is:"); for( i = 0; i < n; i++ ) printf(" %d", a[i]); printf("\n"); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

1. 4
2. 5 1 7 6

输出样例:

After sorted the array is: 1 5 6 7
1. void sort( int a[], int n )
2. {
3. for(int i=0;i<=n-2;i++)
4.     {
5. for(int j=i+1;j<=n-1;j++)
6. if(a[i]>a[j])
7.             {
8. int t=a[i];
9.                 a[i]=a[j]; 
10.                 a[j]=t;
11.             }  
12.     }
13. }

7-1 选择法排序

分数 15

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

1. 4
2. 5 1 7 6

输出样例:

7 6 5 1
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. int n;
6.     cin>>n;
7. int a[n];
8. for(int i=0;i<n;i++)
9.     {
10.         cin>>a[i];
11.     }
12. for(int i=0;i<=n-2;i++)
13.     {
14. for(int j=i+1;j<=n-1;j++)
15. if(a[i]<a[j])
16.             {
17. int t=a[i];
18.                 a[i]=a[j]; 
19.                 a[j]=t;
20.             }  
21.     }
22. for(int i=0;i<n;i++)
23.     {
24.         cout<<a[i];
25. if(i<n-1)
26.         {
27.             cout<<" ";
28.         }
29.     }
30. return 0;
31. }

7-2 选择排序

分数 15

全屏浏览题目

切换布局

作者 魏峻

单位 陕西理工大学

选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。

输入格式:

输入在第1行中给出N(1<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔,并保证数字没有重复的出现。

输出格式:

给出选择排序每一遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。注意:当排序完成时应立即停止

输入样例1:

1. 7
2. 4 5 7 6 3 2 1

输出样例1:

1. 1 5 7 6 3 2 4
2. 1 2 7 6 3 5 4
3. 1 2 3 6 7 5 4
4. 1 2 3 4 7 5 6
5. 1 2 3 4 5 7 6
6. 1 2 3 4 5 6 7

输入样例2:

1. 5
2. 1 2 3 5 4

输出样例2:

1 2 3 4 5
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. int n;
6.     cin>>n;
7. int a[n];
8. for(int i=0;i<n;i++)
9.     {
10.         cin>>a[i];
11.     }
12. for(int i=0;i<=n-2;i++)
13.     {
14. int flag=0;
15. int min=i;
16. for(int j=i+1;j<=n-1;j++)
17.         {
18. if(a[min]>a[j])
19.             {
20.                 flag=1;
21.                 min=j;
22.             } 
23.         }
24. int temp = a[min];  
25.         a[min] = a[i];
26.         a[i] = temp;
27. if(flag==1)
28.         {
29. for(int k=0;k<n;k++)
30.         {
31.             cout<<a[k];
32. if(k<=n-2)
33.             {
34.                 cout<<" ";
35.             }
36.         }
37. if(i<n-2)
38.         {
39.             cout<<endl;
40.         }
41.         }
42.     }
43. return 0;
44. }

7-3 第k轮选择法排序

分数 20

全屏浏览题目

切换布局

作者 lty

单位 浙江大学

众所周知,ln是一个dalao,lty是一个five,现在lty问ln,你能将n个数字进行选择法排序使其从小到大有序吗?ln觉得这个问题很简单,然后就反问lty,你能在这个的基础上,输出进行k轮选择法排序的结果吗?lty是个弱鸡,当然不会,于是向你请教这个问题,你能替lty解决这个问题吗? 给你n个数字,输出将这n个数字经过k轮选择法排序后的结果。

选择法排序:遍历整个数组,第一轮遍历第1位到第n位,找到最小的与第1位交换,第二轮遍历第2位到第n位,找到最小的与第2位交换,以此类推。(每轮只交换一次)

输入格式:

输入在第1行中给出N和K(1 ≤ K < N ≤ 100),在第2行中给出N个待排序的正整数,数字间以空格分隔。

输出格式:

在一行中输出选择法排序扫描完第K遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。

输入样例:

在这里给出一组输入。例如:

1. 6 2
2. 2 3 5 1 6 4

输出样例:

在这里给出相应的输出。例如:

1 2 5 3 6 4
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. int n,k;
6.     cin>>n>>k;
7. int a[n];
8. for(int i=0;i<n;i++)
9.     {
10.         cin>>a[i];
11.     }
12. for(int i=0;i<n-1;i++)
13.     {
14. int min=i;
15. for(int j=i+1;j<n;j++)
16.         {
17. if(a[min]>a[j])
18.             {
19.                 min=j;
20.             }
21.         }
22. int temp=a[min];
23.         a[min]=a[i];
24.         a[i]=temp;
25. if(i==k-1)
26.         {
27. for(int p=0;p<n;p++)
28.             {
29.                 cout<<a[p];
30. if(p<n-1)
31.                 {
32.                     cout<<" ";
33.                 }
34.             }
35.         }
36.     }
37.     cout<<endl;
38. return 0;
39. }
相关文章
|
3月前
|
算法 搜索推荐 C++
【CPP】归并排序
【CPP】归并排序
|
3月前
|
编译器 C++
【CPP】交换排序:冒泡排序、快速排序
【CPP】交换排序:冒泡排序、快速排序
|
3月前
|
算法 搜索推荐 C++
【CPP】选择排序:直接选择排序、堆排序
【CPP】选择排序:直接选择排序、堆排序
|
3月前
|
C++
【CPP】插入排序:直接插入排序、希尔排序
【CPP】插入排序:直接插入排序、希尔排序
|
存储 算法 搜索推荐
21.【冒泡排序与选择排序与malloc()函数】
21.【冒泡排序与选择排序与malloc()函数】
77 0
|
搜索推荐
CPP2022-18-数组-插入排序
CPP2022-18-数组-插入排序
141 0
CPP2022-19-数组-冒泡排序(下)
CPP2022-19-数组-冒泡排序(下)
154 0