【问题标题】:select sort algorithm (C)选择排序算法 (C)
【发布时间】:2018-08-03 19:57:22
【问题描述】:

我正在尝试研究一些算法问题,但找不到启动选择排序算法代码的方法。我使用 Visual Studio 并且代码通过编译没有显示任何错误。当我启动代码时,系统会停止几秒钟并打印“按任意键继续...”。我是初学者,我看不出有什么问题。帮帮忙

#include <stdio.h>

int n = 6;

int qwerty(int a[]) {
    int i, j, t;
    for (i=1; i<=n-1; i++){
        for (j=i+1; j<=n; j++){
            if (a[i] > a[j]){
                t = a[j]; 
                a[j] = a[i]; 
                a[i] = t;
            }
        }
    }
}

int main(void) {
    int a[6] = { 2, 14, 20, 8, 17, 13 };
    qwerty(a[n]);
    int i;
    for (i = 1; i <= n; i++){
        printf("%d ", a[i]);
    }
}

【问题讨论】:

  • C 中的数组是从零开始的。在学习算法之前,您最好先熟悉您所使用的语言。
  • 这是冒泡排序
  • 您需要注意警告。你的代码编译不干净。
  • @ShaheAnsar 这不正确。尽管我讨厌它,但 MATLAB 也是如此。
  • 关于使用 qwerty(a[n]) 调用函数时出现错误(在 MSVC 中仅为警告)。它应该是qwerty(a);,并且还有另一个关于函数不返回值的警告(即使它没有被使用)。

标签: c algorithm sorting select compilation


【解决方案1】:

在 C 语言中,数组从 0 开始索引,最后一个元素在索引 n-1 处。所以你应该改变的第一件事是循环是for(i = 0; i &lt; n-1; i++)和for(j = i + 1; j &lt; n; j++)

另外,这是一种冒泡排序算法,而不是选择排序。选择排序算法可以在任何地方找到,所以我不打算在这里输入。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2019-04-24
    • 1970-01-01
    • 2021-12-29
    • 2021-02-06
    • 2019-03-31
    相关资源
    最近更新 更多