Python和Java分别实现冒泡排序
1.基本思想
冒泡排序的基本思想是对比相邻的元素值。相邻元素值比较,如果满足条件两者就交换,把较小的移动到前面,把较大的移动到后面,这样较小的元素就像气泡一样浮上来了。可以看出,冒泡排序的每一次循环都能确定此次循环中最大值的位置。
2.代码实现
这里使用两层for循环实现。需要指出的是,若假设数组长度为 n,只需要进行 n-1次排序便可确定所有元素的位置,即外层循环 n-1次
以下为Java实现冒泡排序:
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {9,30,63,4,12,85,24,1,3,15};//需要排序的数组
BubbleSort sorter = new BubbleSort();//创建一个对象(Java中尽量使用对象方法解决问题)
sorter.sort(arr);
} // 定义一个 sort 方法,即冒泡排序
public void sort(int arr[]) {
for(int i = arr.length - 1;i > 0;i--) {//这里也可以从0~arr.length-1,但下面也许做相应改动
for(int j = 0;j < i;j++) {
if(arr[j] > arr[j+1]) {//满足条件则相邻元素进行交换
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if(i==arr.length-2) {//这里用来输出每一次循环后的数组,以查看排序流程
showArray(arr);
}
}
showArray(arr);
} // 定义一个 showArray方法,用来输出数组
public void showArray(int arr[]) {
for(int i:arr) {
System.out.println(i+"<");
}
}
}
Python中实现冒泡排序也是利用for循环,要注意的是python里input函数会将输入自动转换为字符串,所以需要强制转换类型。另外输出list时,与字符串提示共同输出时需将list字符串转换后输出
以下是Python实现:
# -*- coding: utf-8 -*- # 定义冒泡排序方法
def BubbleSort(list1):
for i in range(len(list1), 0, -1):#为保持和java程序一致,这里使用逆序range循环
for j in range(i-1):
if list1[j] > list1[j+1]:#满足条件则相邻元素进行交换
temp = list1[j]
list1[j] = list1[j+1]
list1[j+1] = temp
return list1 # 自行调用
if __name__ == '__main__':
n = int(input("请输入列表长度:"))#自己输入数组
x = []
for value in range(n):
y = int(input("请输入第" + str(value) + "个列表元素:"))
x.append(y)
print(x)
a = BubbleSort(x)
print("最终排序结果为:\n"+str(a))
冒泡排序最关键的就是要掌握 相邻元素比较 这个核心。实现上,语言之间大同小异。
Python和Java分别实现冒泡排序的更多相关文章
- Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用
目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要 ...
- paip.判断文件是否存在uapi python php java c#
paip.判断文件是否存在uapi python php java c# ==========uapi file_exists exists() 面向对象风格: File.Exists 作者: 老哇 ...
- paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结
paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...
- JAVA算法系列 冒泡排序
java算法系列之排序 手写冒泡 冒泡算是最基础的一个排序算法,简单的可以理解为,每一趟都拿i与i+1进行比较,两个for循环,时间复杂度为 O(n^2),同时本例与选择排序进行了比较,选择排序又叫直 ...
- java算法之冒泡排序法
由此可见:N个数字要排序完成,总共进行N-1趟排序,每第 i 趟的排序次数为 (N-i) 次,所以 可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即 for(inti=0;i& ...
- MongoDB的账户与权限管理及在Python与Java中的登陆
本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...
- 谈谈Python、Java与AI
Python好像天生是为AI而生的,随着AI的火热,特别是用Python写的TensorFlow越来越火,Python的热度越来越高,就像当年Java就是随着互联网火起来的感觉.在我的工作中,Pyth ...
- [翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能
[翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能 原文: Comparing AWS Lambda performance of Node.js, ...
- Python和Java的硬盘夜话
这是一个程序员的电脑硬盘,在一个叫做"学习"的目录下曾经生活着两个小程序,一个叫做Hello.java,即Java小子:另外一个叫做hello.c ,也就是C老头儿. C老头儿的命 ...
随机推荐
- 数据库mysql之慢查询优化
今天项目遇到一个问题:就是在公司test环境中执行sql查询语句很快,也就几百毫秒,但是放到sit环境中测试就要延迟至少1分钟左右. 网上找了很多原因,大多数都是说索引问题,我看了索引没问题,又重新建 ...
- python datetime模块用法
1. 创建naive(无时区信息)的datetime对象 import datetime dt_utc = datetime.datetime.utcnow() dt_utc # datetime.d ...
- python基本数据类型之列表和元组
python基本数据类型之列表与元组 python中list与tuple都是可以遍历类型.不同的是,list是可以修改的,而元组属于不可变类型,不能修改. 列表和元组中的元素可以是任意类型,并且同一个 ...
- ubuntu下签名命令
Platform: RockchipOS: Android 6.0Kernel: 3.10.92 拷贝签名文件/signapk.jar和apk到同一目录下. 签名文件:rk3288/build/tar ...
- Note | LaTeX
目录 一.TeX家族 1. TeX - LaTeX 2. pdfTeX - pdfLaTeX 3. XeTeX - XeLaTeX 4. CTeX - MiKTeX - TeX Live 二.入门 1 ...
- SOPC与 hello world
本次设计实验源码位于:http://download.csdn.net/detail/noticeable/9922865 实验目的:通过系统的搭建进一步了解FPGA的SOPC开发流程,并借此了姐pl ...
- HTTPS抓包之Charles
这里对HTTP请求的抓包操作不做讲解了,只讲解HTTPS的抓包要进行的操作. [说明]:下面以MAC电脑示例,Windows版本可参考:http://weibo.com/ttarticle/p/sho ...
- 装Office时,安装程序找不到Office.zh-cn\OfficeMUI问题
运行Office 2007安装程序,没想到安装并不顺利,竟然在开始安装时就提示:"找不到Office.zh-cn\OfficeMUI.xml",而文件却是完整存在的,怎么回事? 原 ...
- uboot处理dtb
目录 uboot处理dtb 传递参数给内核 dtb 地址选择 dtb修改 移植fdt title: uboot处理dtb date: 2019/4/28 17:18:19 toc: true --- ...
- 【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
目录 一.写在前面 二.技术广度的快速准备 三.技术深度的快速准备 四.基础功底的快速准备 五.下篇预告 一.写在前面 春节长假转眼已过,即将迎来的是一年一度的金三银四跳槽季. 假如你准备在金三银四跳 ...