当前位置: 首页 > 知识库问答 >
问题:

递归选择排序Java

赫连正初
2023-03-14

我一直在寻找一个递归选择排序,只使用2个参数:

  • 必须排序的数组
  • 一个值k,它指示要对哪个元素进行排序。

示例:a为{6,3,5,7,2}且k为2的SelectionSort(array[]a,int k)将对前3个元素进行排序,并保持最后的元素不变。

我想从一个if语句开始,k为0,如果是这样的话,它就会按原样返回数组,因为您不能对大小为1的数组进行排序。类似于:

public int[] sort(int[] a){
    a = selectionSort(a, n-1);
    return a;
}

public int[] selectionSort(int[] a, int k){
    if (k = 0){
        return a;
    }
    else{
        selectionSort(a, k-1 );
               ... (part i really don't know)
}

我不知道如何做'else'部分,因为我只知道它必须再次调用方法。我不允许创建其他方法。我还需要确保我正好使用了2个参数,不多不少。

我必须用伪代码来计算,但我理解一些Java,所以如果有人能用伪代码或Java代码来帮助我,那将是非常有帮助的

共有1个答案

汝承载
2023-03-14

首先对您的代码做一些说明:

  • 您的方法sortselectionsort不需要返回int[]数组,因为数组对象A始终保持相同。更改的只是这个数组中的内容。因此,您可以使用void作为返回类型。
  • if中使用(k==0)而不是(k=0)

第一部分你已经想通了。下面是如何在伪代码中完成第二部分:

public void selectionSort(int[] a, int k) {
    if (k == 0) {
        return;
    }
    else {
        selectionSort(a, k-1 );
        find x such that a[x] is the smallest of a[k] ... a[a.length - 1]
        if (a[k-1] > a[x]) {
            swap a[k-1] and a[x]
        }
    }
}

我确信你能够将伪代码细化为真实的Java代码。

 类似资料:
  • 问题内容: 我具有以下表结构: 因此,每个论坛帖子都有一个父母,也有一个父母(根帖子除外),等等。我需要的是获取一个论坛帖子所拥有的孩子总数,包括他的孩子的孩子,孙子的孩子等等。 现在,我有一个简单的选择返回直接子代: 我什至不确定这是否可以通过sql来实现,但是我是SQL的入门者,因此我认为也许有人可以提出一些想法。 任何帮助表示赞赏。谢谢。 问题答案: 这应该做到这一点: 您可以通过修改条件来

  • 问题内容: 我看到了这个答案,我希望他是不对的,就像有人不正确地告诉主键在一个列上,而我不能在多个列上设置它一样。 这是我的桌子 我想选择用户ID 2并递归,以便获得其所有直接子对象和间接子对象(即ID 4和5)。 如何以这种方式工作?我在postgresql和sqlserver中看到了递归。 问题答案: 看起来很麻烦,但是要使用它, (或您要在层次树中查找的任何密钥ID)。 前提是从您正在使用的

  • 问题内容: 这是情况。我有两个表: 用户(网站的注册用户), 消息(彼此之间发送的个人消息) 消息表具有以下列(仅是重要的列): ID, 发件人(发送消息的用户的ID), 发送消息的用户的接收者ID), reply_to(此消息要回复到的消息的ID,可以为NULL) 我需要做的是构造一个SELECT查询,该查询将选择2个用户之间的完整对话。即,如果用户A回复了从用户B发送的消息,而用户B回复了该消

  • 本文向大家介绍选择排序,包括了选择排序的使用技巧和注意事项,需要的朋友参考一下 在选择排序技术中,列表分为两部分。一部分将所有元素排序,而另一部分将未排序项目。首先,我们从数组中获取最大或最小数据。获得数据(例如最小值)后,我们将列表中的第一位数据替换为最小数据,从而将其放置在列表的开头。执行后,数组变得越来越小。这样就完成了这种分类技术。 选择排序技术的复杂性 时间复杂度:O(n ^ 2) 空间

  • 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 1. 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 2. 动图演示 3. JavaScript 代

  • 1. 前言 本节内容是排序算法系列之一:选择排序,主要讲解了选择排序的主体思路,选取了一个待排序的数字列表对选择排序算法进行了演示,给出了选择排序算法的 Java 代码实现,帮助大家可以更好的理解选择排序算法。 2. 什么是选择排序? 选择排序(Select Sort),是计算机科学与技术领域中较为简单的一种排序算法。 假设我们按照从小到大的顺序进行排序。选择排序会首先从待排序序列中选择一个最小的