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
}

打印结果:

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

  未完待续....

    

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo... 阅读详情

相关推荐

告别理论!手把手教你用Vivado 2020.2为ZYNQ PL端打造一个AXI4-Full读写DDR的IP核

本文详细介绍了如何使用Vivado 2020.2为ZYNQ PL端创建AXI4-Full主控IP核,实现高效读写DDR内存的实战指南。通过环境配置、IP核创建、系统集成到软件调试的全流程讲解,帮助开发者快速掌握AXI4-Full协议在ZYNQ平台上的应用,提升PL与PS协同工作的数据传输效率。

weixin_30300225的博客 467

Go和Java的异同

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

qq_40229166的博客 7926

从7V到28V宽压输入,手把手教你设计一个5V/3A的DCDC电源模块(附MPS1584选型与原理图避坑)

本文详细解析了基于MPS1584芯片的7V至28V宽压输入到5V/3A输出的DCDC电源模块设计全流程。从电源架构选择、原理图设计要点到实际调试经验,涵盖了输入保护电路、功率转换核心电路及系统级优化测试,帮助工程师规避常见设计陷阱,实现高效稳定的电源解决方案。

weixin_33712987的博客 499

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

如何导入su_利用GIS快速生成SU场地模型

01|前言:进入2021年了,希望大家也是一个新的开始。告诫自己多写文章多更新,多读点书多旅行。然而元旦由于出去玩了4天,积累了一些事情要处理,一直没有时间好好写点东西。今天给大家带来的分享主题叫“利用GIS快速生成SU场地模型”。相关的视频方法其实B站上也有,但我相信视频很多人都不会看,我自己也是。直接给大家上操作流程。主要的操作步骤是【获取场地的矢量shp文件】—【导入ArcScen...

weixin_33806859的博客 9813

开源DIY龙门架:从零构建可编程运动控制平台

运动控制是自动化与机器人技术的核心基础,它通过精确指令驱动执行机构,实现物体的定位与轨迹规划。其原理通常涉及控制器、驱动器、电机与传动机构的协同工作,核心价值在于将数字指令转化为精准的物理运动,从而解放人力并提升作业一致性。在工业自动化、桌面制造(如3D打印、激光雕刻)及教育机器人等领域应用广泛。本文聚焦于一个具体的工程实践案例:使用**铝型材**、**3D打印**零件、Arduino控制器及步进电机,从机械结构设计、电路连接到代码编写,手把手教你打造一个模块化、可扩展的开源龙门架系统。该系统不仅成本可控,

weixin_33168937的博客 620

Go语言与Java语言对比

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

Add小兵的博客 6875

等时替代模型( Isotemporal Substitution Model)

文献阅读:Associations of sedentary time and physical activity with adverse health conditions: Outcome-wide analyses using isotemporal substitution model(该论文于2022年4月28日发表在柳叶刀子刊 EClinicalMedicine 上)

姚巨龙的博客 1万+

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

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

科技D人生 3063

Mplus—验证性因素分析(Confirmatory Factor Analysis, CFA)

介绍一阶和二阶验证性因素分析概况及在Mplus中的操作方法。

m0_54401011的博客 1万+

【车载以太网】【SOMEIP】Wireshark测试someip

一、 Wireshark SOMEIP plugin 1.1 插件安装 Wireshark插件目录:Help -> About Wireshark -> Folders/Pluginshttps://github.com/jamores/eth-ws-someip 解压后,将所有后缀是lua的文件拷贝到Wireshark安装目录plugins/2.4.10/下。 1.2时间戳调整为UTC显示格式 View -> Time Display Format -> Date and Tim.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 9726

选Java还是Golang?

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

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

LoRa学习:LoRa通信调制解调的实现原理与性能

LoRa学习:LoRa调制解调原理与性能 1、LoRa调制解调器原理 LoRa调制解调器采用专利扩频调制和前向纠错技术。与传统的FSK、OOK调制技术相比,LoRa扩大了无线通讯链路的覆盖范围(实现了远距离无线传输),提高了链路的鲁棒性。。 开发人员可调整扩频因子和纠错率这两个参数,从而平衡通讯时的带宽占用、通信速率、空中包的存活时间、以及抗干扰性等。。 LoRa调制解调器...

HowieXue 薛永浩的博客 3万+

Java、Go实现冒泡排序算法

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

allway2的博客 226

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

菜鸟的后花园 648

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

weixin_42116058的博客 338

精雕软件(JDpaint) 5.5 绿色版

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

【冒泡排序算法详解】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、付费专栏及课程。

余额充值