选择排序的递归写法

本文介绍了如何使用递归实现选择排序,通过减少每次参与排序的元素数量,直到只剩下一个元素。每次递归调用找到最小元素与当前起始位置的元素交换,递归的结束条件是只剩一个元素。这种方法简化了迭代过程中的i, j, ++, --操作。" 108959122,9266891,Ubuntu系统更换Linux软件源,"['Linux', 'Ubuntu']
摘要由CSDN通过智能技术生成

因为觉得i,j,++,- -的太烦了

只用一个循环(确定本次参与排序的元素中最小元素的index)
剩下的由递归调用来减少每次参与排序的元素数量。

直到还剩下最后一个元素时结束递归。

思路:
第一次调用:从第0个元素(递归的参数)开始,直到最后一个元素,找到最小元素对应的index。然后和第0个元素swap。

第二次调用:从第1个元素开始(递归的参数),直到最后一个元素,找到最小元素对应的index。然后和第1个元素swap。

第三次调用:从第2个元素开始(递归的参数),直到最后一个元素,找到最小元素对应的index。然后和第2和元素swap。

。。。。。。

最后一次调用,此时只剩下了最后一个元素,就直接返回了。递归的结束条件,不谈!!!

可以看到,递归的第二个参数,就是本次递归调用找到最小值后,要和这个参数对应的元素swap。

递归调用是一层一层往下,每往下调用一层,问题的规模就小一点。返回的时候是一层一层向上返回的。

因为每次递归调用都会把数组(第一个参数)传进去,并进行元素的swap,所以方法是没有返回值的。

package sort;

/**
 * 选择排序的递归写法
 */
public class SelectSort {
   

    public static void sortByRecursive(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值