编写一个函数void SelectionSort(int score[], int n),用选择排序法实现从低到高排序
时间: 2024-02-24 14:55:53 浏览: 114
好的,下面是函数的实现:
```C++
void SelectionSort(int score[], int n)
{
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (score[j] < score[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = score[i];
score[i] = score[minIndex];
score[minIndex] = temp;
}
}
}
```
该函数的参数是一个整型数组 score 和数组的长度 n。它使用选择排序算法将数组从低到高排序。具体实现方法是,遍历数组中的每个元素,找到最小元素,并将其与该元素交换。这样,每次遍历后,数组中的最小元素都会被放到正确的位置上,直到整个数组都被排序完成。
相关问题
1。(Q140,10分)编写一个函数void SelectionSort(int score[], int n),用选择排序法实现从低到高排序。在main函数中定义一个数组并通过输入的方式初始化,调用该函数完成排序并在main函数中输出排序好的数组, 输入提示:"please input the number of array:" 输入格式:"%d" 输入提示:"please input numbers:\n" 输入格式:"%d" 输出提示:"the sorted array is:" 输出格式:"%5d"
下面是实现代码:
```c
#include <stdio.h>
void SelectionSort(int score[], int n);
int main() {
int n;
printf("please input the number of array:");
scanf("%d", &n);
int score[n];
printf("please input numbers:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &score[i]);
}
SelectionSort(score, n);
printf("the sorted array is:");
for (int i = 0; i < n; i++) {
printf("%5d", score[i]);
}
return 0;
}
void SelectionSort(int score[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (score[j] < score[minIndex]) {
minIndex = j;
}
}
int temp = score[i];
score[i] = score[minIndex];
score[minIndex] = temp;
}
}
```
运行示例:
```
please input the number of array:5
please input numbers:
3 5 1 4 2
the sorted array is: 1 2 3 4 5
```
编写一个C++程序,随机产生20个学生的计算机课程的成绩(0~100),使用选择排序法,不使用排序函数,按照从大到小的顺序排序,分别显示排序前和排序后的结果。
在C++中,你可以通过以下几个步骤编写一个简单的程序来完成这个任务:
首先,你需要包含必要的头文件并创建一个结构体来存储学生的信息,包括姓名和成绩。然后,使用`rand()`函数生成随机数,并利用选择排序算法进行降序排列。
```cpp
#include <iostream>
#include <cstdlib> // 包含random库
#include <ctime> // 初始化随机数种子
// 定义学生信息结构体
struct Student {
std::string name;
int score;
};
// 随机生成成绩的辅助函数
int randomScore() {
return rand() % 101; // 生成0到100之间的整数
}
// 选择排序函数
void selectionSort(Student scores[], int n) {
for (int i = 0; i < n - 1; ++i) {
int maxIndex = i;
for (int j = i + 1; j < n; ++j) {
if (scores[j].score > scores[maxIndex].score) {
maxIndex = j;
}
}
if (maxIndex != i) { // 如果找到更大值
std::swap(scores[i], scores[maxIndex]);
}
}
}
int main() {
// 设置随机数种子(为了保证每次运行程序得到的结果一致)
srand(time(0));
const int numStudents = 20;
Student scores[numStudents];
// 生成随机成绩并填充学生数组
for (int i = 0; i < numStudents; ++i) {
scores[i].name = "Student_" + std::to_string(i);
scores[i].score = randomScore();
}
std::cout << "原始成绩(按降序):" << std::endl;
for (const auto& student : scores) {
std::cout << student.name << ": " << student.score << std::endl;
}
// 对成绩进行选择排序
selectionSort(scores, numStudents);
std::cout << "\n排序后的成绩(降序):" << std::endl;
for (const auto& student : scores) {
std::cout << student.name << ": " << student.score << std::endl;
}
return 0;
}
```
当你运行此程序时,它将打印出原始的、未排序的学生分数列表,以及经过选择排序后的降序分数列表。
阅读全文