使用选择法(打擂寻找最大值)将7个无序的互不相同的整数按从小到大的顺序排列,并展示排序的过程。

使用选择法(打擂寻找最大值)将7个无序的互不相同的整数按从小到大的顺序排列,并展示排序的过程。
输入
输入7个整数。
输出
输出每轮选择后的数列,每行一组,用空格分隔。
难度
较难
输入示例
5 1 7 6 3 2 4

该回答引用chatgpt:

#include <stdio.h>

int main() {
    int nums[7];
    printf("请输入7个整数:\n");
    for (int i = 0; i < 7; i++) {
        scanf("%d", &nums[i]);
    }

    for (int i = 0; i < 6; i++) {
        int max_index = i;
        for (int j = i + 1; j < 7; j++) {
            if (nums[j] < nums[max_index]) {
                max_index = j;
            }
        }
        if (max_index != i) {
            int temp = nums[i];
            nums[i] = nums[max_index];
            nums[max_index] = temp;
        }
        for (int j = 0; j < 7; j++) {
            printf("%d ", nums[j]);
        }
        printf("\n");
    }
    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7675508
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:3与7相关的数:如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数。
  • 以下回答来自chatgpt:

    选择排序的具体步骤如下:

    1.输入7个无序的互不相同的整数。

    示例输入:4 7 2 1 5 3 6

    2.使用选择排序进行从小到大排序。

    选择排序的思路是:每一轮从待排序的元素中选取最小(或最大)的元素,放到已排序的队列中。

    具体步骤为:

    (1)从第i个元素开始,循环比较第i+1到第7个元素,找到最小的元素。

    (2)将第i个元素和最小的元素交换位置。

    (3)重复(1)和(2)的步骤,直到整个数组排序完成。

    具体实现如下:

    include

    using namespace std;

    void selectionSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { int min_idx = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[min_idx]) min_idx = j; } swap(arr[i], arr[min_idx]); //输出每一轮排序之后的结果 for (int k = 0; k < n; k++) { if (k == 0) cout << arr[k]; else cout << " " << arr[k]; } cout << endl; } }

    int main() { int arr[7]; for (int i = 0; i < 7; i++) cin >> arr[i]; selectionSort(arr, 7); return 0; }

    3.展示每一轮排序之后的结果。

    在选择排序的每一轮排序之后,都将当前数组的内容输出。具体实现在上面的代码中已经给出。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^