为什么我的选择排序算法不做它应该做的事情(java)?

微信

在过去的几个小时里,我尝试用 Java 编写选择排序算法,而无需查看已完成的代码。我刚刚阅读了算法的工作原理(通过文字)。

我不会复制粘贴解释,而是描述它(检查我是否理解它):

- 我们有一个未排序的数组 A 和一个空数组 B(与 A 的大小相同)

- 现在取未排序的数组 A 并找到它的最小元素。找到最小的元素,现在将此元素与未排序数组 A 的第一个元素切换

-将第一个元素(=数组A的最小元素)放入数组B

-重复直到我们完成 A 的每个元素


我试图用 Java 编码:

public class Selectionsort{

    public static void main(String[] args) {
        int[] myArray = {9,6,1,3,0,4,2};
        int[] B = new int[myArray.length];

        for(int i=0; i<myArray.length; i++) {
            B[i]=findMIN(myArray, i);
        }
    }

    static int findMIN(int[] A, int c) {
        int x = A[c];
        while(c<A.length) {
            if(x>A[c]) {
                x=A[c];
            }
            c++;
        }
        return x;
    }
}

但我得到一个奇怪的输出:

0 0 0 0 0 2 2 
艾略特新鲜

首先,修复您的findMIN,您应该返回最小元素索引(并将当前值的元素与最小值进行比较)。喜欢,

static int findMIN(int[] A, int c) {
    int x = c;
    for (; c < A.length; c++) {
        if (A[c] < A[x]) {
            x = c;
        }
    }
    return x;
}

然后我会使用一种swap方法,比如

static void swap(int[] A, int a, int b) {
    if (a != b) {
        int t = A[a];
        A[a] = A[b];
        A[b] = t;
    }
}

最后,把它绑在一起,就像

public static void main(String[] args) {
    int[] myArray = { 9, 6, 1, 3, 0, 4, 2 };

    for (int i = 0; i < myArray.length; i++) {
        swap(myArray, i, findMIN(myArray, i));
    }
    System.out.println(Arrays.toString(myArray));
}

而且,我得到

[0, 1, 2, 3, 4, 6, 9]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的函数做了它应该做的事情然后它不继续执行代码?

来自分类Dev

Bootstrap 没有做它应该做的事情

来自分类Dev

禁令命令没有做它应该做的事情

来自分类Dev

它使用.equals语句JAVA做了它不应该做的事情

来自分类Dev

编辑:为什么这个公式不能做我认为应该做的

来自分类Dev

为什么我的控制功能与它应该做的相反?

来自分类Dev

我应该选择哪种算法,为什么?

来自分类Dev

根据用户提供的键替换输入。现在它可以正常编译并执行它应该做的事情

来自分类Dev

什么是“ userdel --root”?应该做的

来自分类Dev

我所有的 li 菜单项关闭菜单不做他们应该做的

来自分类Python

为什么我的函数部分执行了应做的事情?

来自分类Dev

ifelse 没有做它应该做的

来自分类Dev

让这个查询做它应该做的事

来自分类Dev

递归没有做它应该做的事

来自分类Dev

在 Unity2D 中,GameObject 被实例化,但在碰撞时不会触发它应该做的事情(有时)

来自分类Dev

这是什么:document.reservation.submit(); 应该做的?

来自分类Dev

在binarysearch中,如果找不到该元素,为什么要从应该做的地方减去一个元素呢?

来自分类Dev

为什么在Expression.Call上编译的lambda构建比应该做的委托慢一点?

来自分类Dev

我应该做什么范围?

来自分类Dev

为什么我不能用 Switch-Case 做我在 JS 中用 If-Else 做的事情?

来自分类Dev

为什么我托管在Azure中的ASP NET Web服务不做任何事情?

来自分类Dev

为什么我的xib文件在Xcode 5中不做任何事情?

来自分类Java

为什么我的基于Java的冒泡排序优于我的选择排序和插入排序

来自分类Dev

为什么我的自适应选择排序算法在C ++中不起作用

来自分类Dev

为什么javascript addEventListener不做任何事情?

来自分类Dev

我应该将我的语言环境设置为什么,这样做的含义是什么?

来自分类Dev

您能帮我弄清楚这段Java代码片段应该做什么吗?

来自分类Dev

为什么我的排序算法排序不正确?

来自分类Dev

当我选择一个项目时,它什么都不做?

Related 相关文章

  1. 1

    为什么我的函数做了它应该做的事情然后它不继续执行代码?

  2. 2

    Bootstrap 没有做它应该做的事情

  3. 3

    禁令命令没有做它应该做的事情

  4. 4

    它使用.equals语句JAVA做了它不应该做的事情

  5. 5

    编辑:为什么这个公式不能做我认为应该做的

  6. 6

    为什么我的控制功能与它应该做的相反?

  7. 7

    我应该选择哪种算法,为什么?

  8. 8

    根据用户提供的键替换输入。现在它可以正常编译并执行它应该做的事情

  9. 9

    什么是“ userdel --root”?应该做的

  10. 10

    我所有的 li 菜单项关闭菜单不做他们应该做的

  11. 11

    为什么我的函数部分执行了应做的事情?

  12. 12

    ifelse 没有做它应该做的

  13. 13

    让这个查询做它应该做的事

  14. 14

    递归没有做它应该做的事

  15. 15

    在 Unity2D 中,GameObject 被实例化,但在碰撞时不会触发它应该做的事情(有时)

  16. 16

    这是什么:document.reservation.submit(); 应该做的?

  17. 17

    在binarysearch中,如果找不到该元素,为什么要从应该做的地方减去一个元素呢?

  18. 18

    为什么在Expression.Call上编译的lambda构建比应该做的委托慢一点?

  19. 19

    我应该做什么范围?

  20. 20

    为什么我不能用 Switch-Case 做我在 JS 中用 If-Else 做的事情?

  21. 21

    为什么我托管在Azure中的ASP NET Web服务不做任何事情?

  22. 22

    为什么我的xib文件在Xcode 5中不做任何事情?

  23. 23

    为什么我的基于Java的冒泡排序优于我的选择排序和插入排序

  24. 24

    为什么我的自适应选择排序算法在C ++中不起作用

  25. 25

    为什么javascript addEventListener不做任何事情?

  26. 26

    我应该将我的语言环境设置为什么,这样做的含义是什么?

  27. 27

    您能帮我弄清楚这段Java代码片段应该做什么吗?

  28. 28

    为什么我的排序算法排序不正确?

  29. 29

    当我选择一个项目时,它什么都不做?

热门标签

归档