用选择法对10个整数进行升序排序。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果


你题目的解答代码如下:

#include <iostream>
using namespace std;
int main()
{
    int a[10] = {4, 31, 5, 67, 4, 4, 3, 2, 6, 0}, i, j, x, z;
    for (i = 0; i < 9; i++)
    {
        x = i; //,先将a[i]当成最小的数,遍历找到最小的数的下标
        for (j = i + 1; j < 10; j++)
        {
            if (a[x] > a[j]) //a[x]当成最小的数,于后面的元素一 一比较,
                x = j;       //如果a[x]>a[j]那么x等于j,变换最小值的下标
        }
        if (x != i)
        {             //如果x!=i,说明x的值已经改变,找到了比a[i]还小的数的下标
            z = a[i]; //进行a[i]和a[x]的交换
            a[i] = a[x];
            a[x] = z;
        }
    }
    for (j = 0; j < 10; j++)
    {
        cout << a[j] << " ";
    }
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

#include <stdio.h>
int main() {
  int a[10], i, j, n;
  printf("输入10个数:");
  for (i = 1; i <= 10; i++)
    scanf("%d", &a[i]);
  for (i = 1; i <= 10; i++)
    for (j = i; j <= 10; j++) //从第一个开始进行比较
    {
      if (a[i] > a[j]) //选择最小的数
      {
        n = a[i];
        a[i] = a[j];
        a[j] = n;
      }
    }
  printf("该十个数升序为: ");
  for (i = 1; i <= 10; i++)
    printf("%3d ", a[i]);
}

img

有帮助请点一下右上角的采纳,谢谢