go与java实现冒泡排序

冒泡排序在 5 种编程语言中的实现差异与性能基准测试 本文深入比较了冒泡排序在Python、Java、C++、JavaScript和Go五种编程语言中的实现差异与性能表现。通过基准测试揭示编译型语言(如C++/Go)在效率上的显著优势,同时分析了各语言特性对算法实现的影响,为开发者提供了针对不同场景的优化建议和替代方案选择。 阅读详情

     

众所周知,在算法里面,冒泡排序算是很经典的一个了,通常很多面试都会让我们手写冒泡排序,那么我们在写这个代码之前首先要了解什么是冒泡排序.知道其原理,这样我们才能用代码的方法来实现它.下面 我将用java和go 分别来实现一个简单的冒泡排序.

冒泡排序算法的原理如下: 

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 

  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 

  3. 针对所有的元素重复以上的步骤,除了最后一个。 

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

JAVA实现冒泡排序 

package com.csq.study;

import java.util.Arrays;

public class SortingDemo {

    public static void main(String[] args) {
        int arr[] = {2, 4, 7, 6, 8, 5, 9};
        System.out.println("原数组为:"+Arrays.toString(arr));
        int[] ints = bubbleASort(arr);
        System.out.println("从小到大排序后为:"+Arrays.toString(ints));
        int[] ints1 = BubbleZsort(arr);
        System.out.println("从大到小排序后为:"+Arrays.toString(ints1));
    }

    /**
     * 冒泡排序
     * 循环比较相邻的两个数,将较大的数放在后面
     * @param nums 待排序数值序列
     */
    private static int[] bubbleASort(int[] nums) {
        int len = nums.length;
        if (len == 0 || len == 1) {
            return nums;
        }
        for (int i = 0; i < len; i++) {
            for (int j = 0, subLen = len - 1 - i; j < subLen; j++) {
                if (nums[j + 1] < nums[j]) {
                    int tmp = nums[j + 1];
                    nums[j + 1] = nums[j];
                    nums[j] = tmp;
                }
            }
        }
        return nums;
    }
    /**
     * 冒泡排序
     * 循环比较相邻的两个数,将较小的数放在后面
     * @param nums 待排序数值序列
     */
    private static int[] BubbleZsort(int[] nums) {
        int len = nums.length;
        if (len == 0 || len == 1) {
            return nums;
        }
        for (int i = 0; i < len - 1; i++) {
            for (int j = 0; j < len - 1 - i; j++) {
                if (nums[j] < nums[j + 1]) {
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }

            }
        }
        return nums;
    }
}

   打印结果:

 go实现冒泡排序

package main

import (
	"fmt"
)

func main(){
	arr:= []int{2}
	fmt.Println("原数组为:",arr)
	asort := BubbleAsort(arr)
	fmt.Println("从小到大排序后为",asort)
	zsort := BubbleZsort(arr)
	fmt.Println("从大到小排序后为:",zsort)
}

/**
 * 冒泡排序
 * 循环比较相邻的两个数,将较大的数放在后面
 * @param nums 待排序数值序列
 */
func BubbleAsort(arr []int) [] int{
	if len(arr) == 0 || len(arr) == 1{
		return arr
	}
	for i := 0; i < len(arr)-1; i++ {
		for j := i+1; j < len(arr); j++ {
			if  arr[i]>arr[j]{
				arr[i],arr[j] = arr[j],arr[i]
			}
		}
	}
	return arr
}

/**
 * 冒泡排序
 * 循环比较相邻的两个数,将较小的数放在后面
 * @param nums 待排序数值序列
 */

func BubbleZsort(arr []int) [] int{
	if len(arr) == 0 || len(arr) == 1{
		return arr
	}
	for i := 0; i < len(arr)-1; i++ {
		for j := i+1; j < len(arr); j++ {
			if  arr[i]<arr[j]{
				arr[i],arr[j] = arr[j],arr[i]
			}
		}
	}
	return arr
}

打印结果:

可以看到两种语言虽然写法不同,但是都是基于冒泡排序的原理来进行的,所以我们在处理一个东西的时候,首先明白其原理,剩下的无非就是一个语言不同而已了.

  未完待续....

    

手把手教你用STM32CubeMX和HAL库驱动MT6835磁编码器(SPI读取21位角度) 本文详细介绍了如何使用STM32CubeMX和HAL库驱动MT6835磁编码器,通过SPI接口读取21位高精度角度数据。从硬件准备、CubeMX配置到HAL库驱动实现与优化,提供了完整的实战指南,帮助开发者快速掌握磁编码器的应用技巧,适用于机器人关节和精密仪器等高精度场景。 阅读详情

相关推荐

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1994

Go和Java的异同

一、面向对象 1.Java是纯正的面向对象语言,Go相对于Java而言,就比较简洁,没有例如类的继承、接口的实现、构造函数和析构函数、隐藏的 this 指针等,也没有 public、protected、private 之类的访问修饰符。 2.类型系统 类型系统是指一个语言的类型体系结构。一个典型的类型系统通常包含如下基本内容: 基本类型,如 byte、int、bool、float、string 等; 复合类型,如数组、切片、字典、指针、结构体等; 可以指向任意对象的类型(Any 类型); 值语义和引用语义

qq_40229166的博客 7926

从仿真到真机:如何将XTDrone的VINS-Fusion+RTABMap建图方案部署到真实无人机上?

本文详细介绍了如何将XTDrone的VINS-Fusion+RTABMap建图方案从仿真环境迁移到真实无人机上。内容涵盖硬件选型、传感器配置、VINS-Fusion调优、RTABMap性能优化以及系统集成等关键步骤,特别针对三维稠密重建在真实环境中的挑战提供了实用解决方案。

weixin_29056781的博客 242

Go与java

Go与java基础 一.go的简介 Go语言是Google出品的近年来快速崛起的编程语言.简单高效是它的标签. 最近抽空从零开始学一下go.不罗嗦, 咱们从 java的学习路线来 看看 go的实现吧~ 二.Go的基础语法 1.编译与运行 ##java用jvm做到程序与操作系统的隔离. 一次性编译生成的class文件,处处可以运行 ## 简单来说 windows上编译的出class文件,拿到安装了jvm的linux上可直接可以执行 javac Hello.java java Hello ## go 在不同的操

weixin_45469930的博客 3962

中科蓝讯蓝牙耳机SDK实战:从目录解析到消息处理框架

本文深入解析中科蓝讯蓝牙耳机SDK的目录结构与消息处理框架,提供从硬件驱动到蓝牙功能定制的实战指南。重点剖析SDK核心模块如消息队列机制、按键事件处理及电量报告优化,并分享二次开发中的调试技巧与避坑经验,助力开发者高效完成TWS耳机功能定制。

weixin_30335575的博客 388

物联网 Mixly-智能楼道灯

一、实验目的及要求 熟悉声音及人体红外传感器用法。 二、实验原理与内容 1.使用声音传感器实现声控灯功能。 2.使用人体红外传感器实现人体检测控制灯功能。 三、实验软硬件环境 硬件:Arduino、LED灯、声音传感器、人体红外传感器 软件:Mixly IDE 四、实验过程(实验步骤、记录、数据、分析) 核心代码截图 声控灯: 人体红外检测灯: 3.实验效果图: (1)、声控灯总线连接: (1)、声控灯声音大于一某个值时灯亮,经过2秒后灯灭: (3)、人体红外检测灯连接总线: (4)、人体红外

qq_43430810的博客 1917

Go语言与Java语言对比

宏观看Go与Java的差异 接着,我们来看一下Go语言与Java的差异之处: ``` *.无虚拟机,不跨平台(这里的平台指操作系统)(可以运行多个平台,每个平台打不同的二进制程序包),需要打包编译成对应服务器操作系统版本(windows/linux)的可执行程序(比如windows是exe)。(注:说go跨平台的是指32位和64位相同操作系统之间的跨平台) ​ *.因为Go程序直接打包成操作系统可执行的文件,没有虚拟机在中间转换的一层,所以理论上执行效率会更高(理论上更高,实际情况需具

Add小兵的博客 6875

【天线与电波传播】电波传播部分 第7章 电波传播的基础知识3

菲涅尔区与菲涅尔带的基本知识

Chen59_2328的博客 1601

Go 语言学习总结(9)—— Go 与 Java 全面对比总结

Golang: 编码风格相对统一,简单,没有太多的语法糖等,Java层次清晰,全面面向对象。

科技D人生 3063

间充质干细胞衰老机制与抗衰老干预策略研究

干细胞技术在再生医学领域具有广阔应用前景,其中间充质干细胞(MSCs)因其多向分化潜能和免疫调节特性备受关注。细胞衰老是影响干细胞治疗效果的共性难题,表现为增殖能力下降、端粒缩短等特征。通过表观遗传学分析发现,衰老MSCs存在DNA甲基化异常和组蛋白修饰改变;线粒体功能障碍导致ATP产量锐减,ROS累积显著增加。针对这些机制,研究者开发了包括小分子化合物筛选、CRISPR基因编辑和三维培养优化在内的多种干预策略。这些技术在组织修复、抗衰老治疗等应用场景中展现出重要价值,例如可提升心肌梗死修复效率2.3倍,缩

weixin_33502772的博客 229

Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range”

基于之前的开发程序通过Jetson Xavier NX 硬编码的H265发出后,上位机断点播放发出来的H265码流,会报“PPS id out of range” 错误。

jzwjzw19900922的博客 3812

选Java还是Golang?

最近Java转Golang的话题非常火热,本篇文章简单介绍我对Java与go的看法。

在岗Golang后端开发,分享一些日常笔记和代码 1893

一文读懂OpenClaw:核心组件与工作原理深度解析

Agent核心:负责理解意图、规划任务、协调执行消息系统:统一的消息格式,实现组件间解耦工具注册表:可扩展的工具系统,支持自定义工具模型适配层:多模型支持,统一API接口安全机制:沙箱隔离、权限确认、操作审计性能优化:并行执行、智能缓存、增量更新理解这些核心组件和工作原理,将帮助你更好地使用OpenClaw,也为后续开发自定义扩展打下坚实基础。在下一篇文章中,我们将详细介绍OpenClaw的界面操作,包括命令行与交互模式的各种技巧。

gaoxiang_120的专栏 833

Java、Go实现冒泡排序算法

该算法遍历一个列表并比较相邻的值,如果它们的顺序不正确,则会交换它们。 优点 它是从头开始理解和编码的最简单的排序算法之一。 从技术角度来看,冒泡排序对于对小型数组进行排序是合理的,特别是在内存资源非常有限的计算机上执行排序算法时。 缺点 由于时间复杂度为〇(n2),因此不适用于大量数据。 与其他排序算法(例如quicksort)相比,气泡排序非常慢。 算法示例 Java程序 import java.util.Arrays; class BubbleSortDemo { public

allway2的博客 226

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

十大经典排序算法——冒泡排序 (Java、JavaScript、PHP、Python、Go语言实现)

十大经典排序算法之——冒泡排序 本文主要介绍十大经典排序算法中的“冒泡排序”,并附上冒泡排序算法的Java、JavaScript、PHP、Python、Go语言实现。 1、十大经典排序算法介绍 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择...

菜鸟的后花园 648

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

冒泡排序的跨语言实现:Java抽象、Go并发与前端异步的陷阱

排序算法是计算机科学的基础概念,其核心在于通过特定规则对数据集合进行重新排列。从原理上看,排序算法的效率主要由时间复杂度决定,例如O(n²)与O(n log n)的差异直接影响了大规模数据处理的可行性。在工程实践中,不同编程语言的特性和设计哲学会深刻影响算法的实现方式与性能表现。Java开发者常通过策略模式等设计模式构建可扩展的框架,体现了面向对象的思想;Go程序员则倾向于利用Goroutine探索并发可能性,尽管这可能破坏算法的顺序依赖;前端开发者需警惕同步计算阻塞事件循环,异步回调并非CPU密集型任务的

weixin_42116058的博客 338

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【冒泡排序算法详解】Java/Go/Python/JS/C不同语言实现

它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。即通过遍历待排序的数列,一次比较两个元素,根据大小调换位置,直到把最大的或最小的冒出来。内循环每次都从第一项开始,将该项与待排序的后项逐个进行大小比较,再两两交换,将大的数字冒出来。先建立两个循环,外循环用于遍历整个数组,内循环遍历待排序的区间。Java/Go/Python/JS/C 语言实现冒泡排序算法。平均时间复杂度:O(N^2)最差时间复杂度:O(N^2)最佳时间复杂度:O(N)空间复杂度:O(1)

156

Java/Go实现——选择排序和冒泡排序

/** * 选择排序算法 * 在数组中找到最小元素,放在第0个位置; * 再找到次最小元素,放在第1个位置;再找到第三最小元素,放在第2个位置; * 以此类推,直到所有元素排序完成 * @param array */ public static void SelectSort(int[] array){ int temp, min, m; for(int i = ...

BruceBupt的博客 459

排序算法(一)冒泡排序--C++/JS/PYTHON/GO/JAVA/PHP实现

冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第...

剑神一笑的博客 300

GO/JAVA 算法总结

博客 213

冒泡排序

冒泡排序 ​ 想必只要是接触过算法的同学,都必听过冒泡排序这四个大字,哈哈。可以说是排序算法中最简单,最基础的一种。其名字的由来正是因为元素在整个排序过程就像碳酸饮料中的气泡一点一点浮上水面,所以称之为冒泡排序(Bubble Sort)。 过程 ​ 冒泡排序的整个过程用一句话就可以总结(我们这里假设排好序的序列是从小到打的顺序): 遍历序列N次,每次遍历的过程中,如果左边的元素大于右边的元素,那么就将他们交换。 接下来我们举一个具体例子说明: 现在有上述一个无序序列,我们通过冒泡

My_name_is_ZwZ的博客 3717

冒泡排序(java版,golang版)

冒泡排序是每个编程初学者必学的经典算法。很久没用上,有点遗忘了。写篇博客总结一下。也希望能帮助大家理解冒泡排序。直接上代码。 java版本: import java.util.Arrays; /** * Created by Administrator on 2016/7/30. */ public class MpTest { public static voi...

zhangmaoyu199051的专栏 227

主流语言实现冒泡排序算法

什么是冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 下面主要讲解几种常用开发语言的冒泡排序的实现逻辑: 主流语言实

hirezy 1834

一、[动图] 冒泡排序 其它语言[ python、java、go、php、c++、c等 ] 数据结构与算法

冒泡排序定义 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,

qq_45708267的博客 210

一、冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一...

此人很懒,什么也没有留下~ 328

如何使用Go、Python、Java、Rust、C、JS等6种编程语言实现六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本文将深入解析并展示如何使用六种不同的编程语言(Go、Python、Java、Rust、C、JavaScript)实现六大经典排序算法,包括:插入排序、希尔排序、选择排序、冒泡排序、堆排序和快速排序。通过本教程,你将不仅能够理解这些算法的核心思想,还能掌握如何在多个流行的编程语言中实现它们。通过本文的学习,你将掌握如何用Go、Python、Java、Rust、C、JavaScript等6种编程语言实现经典排序算法,提升你在数据处理、算法设计等方面的能力。无论你是学习算法、优化程序,还是准备面试

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+
上一篇: GO语言学习之-数组和切片(二)
下一篇: GO和JAVA如何处理两个数组中的并集和交集
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值