当前位置: 首页 > news >正文

算法 数据结构 递归冒泡算法 java冒泡算法 优化递归冒泡 数据结构(九)

 使用递归算法实现冒泡:

 

package com.nami.algorithm.study.day06;import java.util.Arrays;/*** beyond u self and trust u self.** @Author: lbc* @Date: 2023-09-05 15:36* @email: 594599620@qq.com* @Description: keep coding*/
public class BubbleSort2 {//    public static void sort(int[] target, int num) {
//        if (num == 0) {
//            return;
//        }
//        bubble(target, num-1);
//
//        sort(target, num-1);
//    }
//
//    private static void bubble(int[] target, int j) {
//        for (int i = 0; i < j; i++) {
//            if (target[i] > target[i + 1]) {
//                int temp = target[i];
//                target[i] = target[i+1];
//                target[i+1] = temp;
//            }
//        }
//    }public static void sort(int[] target) {bubble(target, target.length -1 );}private static void bubble(int[] target, int j) {if (j == 0) {return;}for (int i = 0; i < j; i++) {if (target[i] > target[i + 1]) {int temp = target[i];target[i] = target[i+1];target[i+1] = temp;}}bubble(target, j - 1);}public static void main(String[] args) {int[] test = new int[]{1, 54, 234, 675, 32432, 23, 78, 459, 354, 9, 344, 22, 46, 85, 236, 3278, 245, 83, 154, 2, 1, 34, 73, 23};int[] test2= new int[] {2,4,7,3,2,1};
//        sort(test, test.length);sort(test2);System.out.println(Arrays.toString(test2));}}

优化数组稳定得情况, 减少无意义遍历,新增参数x, 标识是否发生了挪动,递归时使用x索引,非常巧妙。递归妙

package com.nami.algorithm.study.day06;import java.util.Arrays;/*** beyond u self and trust u self.** @Author: lbc* @Date: 2023-09-05 15:36* @email: 594599620@qq.com* @Description: keep coding*/
public class BubbleSort {public static void sort(int[] target) {bubble(target, target.length -1 );}private static void bubble(int[] target, int j) {if (j == 0) {return;}// 变换标识 索引iint x = 0;for (int i = 0; i < j; i++) {if (target[i] > target[i + 1]) {int temp = target[i];target[i] = target[i+1];target[i+1] = temp;x = i;}}bubble(target, x);}public static void main(String[] args) {int[] test = new int[]{1, 54, 234, 675, 32432, 23, 78, 459, 354, 9, 344, 22, 46, 85, 236, 3278, 245, 83, 154, 2, 1, 34, 73, 23};int[] test2= new int[] {2,4,7,3,2,1};
//        sort(test, test.length);sort(test2);System.out.println(Arrays.toString(test2));}}

http://www.lryc.cn/news/160991.html

相关文章:

  • 【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(十五)
  • 洛谷P8814:解密 ← CSP-J 2022 复赛第2题
  • Flutter实现CombineExecutor进行多个异步分组监听,监听第一个异步执行的开始和最后一个异步执行结束时机。
  • 2023 年最新Java 毕业设计选题题目参考,500道 Java 毕业设计题目,值得收藏
  • Mac电脑其他文件占用超过一大半的内存如何清理?
  • geopandas 笔记: datasets 数据集
  • 长胜证券:三大拐点共振 看好智能驾驶新一轮行情
  • AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用
  • 【Python程序设计】 工厂模式【07/8】
  • PHP8的多维数组-PHP8知识详解
  • 【【STM32--28--IO引脚的复用功能】】
  • CodeJock Active-X / COM v22.1.0 Crack
  • mac通过docker搭建elasticsearch:8.9.2以及kibana:8.9.2
  • python实现排列组合代码
  • 盲盒小程序开发方案
  • Mysql锁
  • Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere
  • 机器学习笔记 - 【机器学习案例】基于KerasCV的预训练模型自定义多头+多标签预测
  • Linux Debian常用70条经典运维命令和使用案例
  • 【涵子来信】——步入中学,日积跬步,以致千里
  • 【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)
  • 数据库相关基础知识
  • LeetCode刷题笔记【23】:贪心算法专题-1(分发饼干、摆动序列、最大子序和)
  • C++算法 —— 分治(2)归并
  • Hadoop YARN HA 集群安装部署详细图文教程
  • BBS+商城项目的数据库表设计
  • 如何使用Savitzky-Golay滤波器进行轨迹平滑
  • Nomad系列-Nomad网络模式
  • OpenCV项目开发实战--实现面部情绪识别对情绪进行识别和分类及详细讲解及完整代码实现
  • Validate表单组件的封装