用选择法对十个整数排序

我想请教一下大家 为什么程序不报错但是得不到我想要的结果,是我算法出问题了,还是遗漏了什么啊?最后输入十个数,就数全消失了🤣
非常感谢大家!

img

img

for(i=0;i<10;i++)
scanf("%d",&a[i]);
数组大小是10,下标只能是0到9。整型输入,要加&取地址
另外你双重循环的循环变量都用j,怎么能行呢?
再说你这代码连数组元素交换的代码都没有,怎么可能实现排序啊?
网上找个选择排序的例子,对比一下自己的代码吧

前边加个& scanf("%d",&a[i])

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7544941
  • 这篇博客也不错, 你可以看下简单的使用定时器实现按键消抖,写得不好,望大家给指点一二。多谢了。
  • 除此之外, 这篇博客: 为了拿证好吧中的 写这篇文章的缘由呢是因为我发现我记性真的很差,不把他记下来我总是需要去翻书找知识点,但是外出时带书又会不方便,所以我想到了把他传到网上,以便我和大家随时查看。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 操作最后一个元素复杂度震荡问题的解决小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据问题描述,你正在尝试使用选择排序算法对十个整数进行排序。选择排序是一种简单直观的排序算法,其基本思想是每次从待排序的元素中选择最小(或最大)的元素,放到已排序的序列的末尾。

    然而,你提到程序没有报错,但没有得到期望的结果,并且输入的十个数后所有数字都消失了。这可能是因为你在实现选择排序算法时遗漏了一些重要的步骤。

    以下是一个使用选择排序算法对十个整数进行排序的具体解决方案:

    首先,创建一个长度为十的整数数组,并通过键盘输入十个整数。然后,遍历数组中的元素,找到剩余元素中的最小值,并将其与当前位置的元素交换。重复这个过程直到整个数组排序完成。

    #include <stdio.h>
    
    void selectionSort(int arr[], int n) {
        int i, j, minIndex, temp;
        for (i = 0; i < n - 1; i++) {
            minIndex = i; // 初始化最小值索引为当前位置
            for (j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j; // 找到更小的值,更新最小值索引
                }
            }
            // 将最小值与当前位置的元素交换
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
    
    int main() {
        int arr[10];
        int i;
    
        printf("请输入十个整数:\n");
        for (i = 0; i < 10; i++) {
            scanf("%d", &arr[i]);
        }
    
        selectionSort(arr, 10);
    
        printf("排序后的结果为:\n");
        for (i = 0; i < 10; i++) {
            printf("%d ", arr[i]);
        }
    
        return 0;
    }
    

    通过以上代码,你可以使用选择排序算法对输入的十个整数进行排序,并将结果输出。希望能解决你的问题!如果有任何疑问,请随时提问。