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老头儿的命 ...
随机推荐
- HBase总结(十一)hbase Java API 介绍及使用示例
几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- Java输入输出流详解
通过数据流.序列化和文件系统提供系统输入和输出. Java把这些不同来源和目标的数据都统一抽象为数据流.Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为 ...
- mysql 地理位置定位
SET @pt2 = ST_GeomFromText('POINT(116.405289 39.904987)'); SELECT *,ST_Distance_Sphere(ST_GeomFromTe ...
- docker-compose安装redis-sentinel集群(1主+2副+2哨兵)
前提:本试验环境已经提前安装了docker和docker-compose 说明:本次部署是单机伪集群,想要部署真正的集群,需要将秒个主件拆分到各个机器上去部署,只修改ip地址 1.下载redis的相关 ...
- Cannot set property 'onclick' of null报错
经常几个页面使用公共js文件, 原来遇到也没留意, 原来是本页面执行的时候, 其他页面也在执行并赋予id于onclick. 因为页面是正常情况下是不存在null和undefined if(null){ ...
- pycharm 如何进行全部搜索
界面里面先按ctrl F 弹出搜索页面 在搜索框内连续按两次shift shift可以搜索全文
- Beta冲刺 (4/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 共享编辑文章的后端数据处理 展示Gi ...
- 从navicat中导入sql文件过大:Got a packet bigger than 'max_allowed_packet' bytes
失败背景:刚才通过navicat向本地mysql数据库中导入sql文件.第一个sql文件(多个表)大小为967M,导入成功: 第二个sql(单个表)大小为50.1M,导入失败. 1.在navicat中 ...
- java.io.IOException: No space left on device 错误
今天碰到比较奇怪的问题: 7/05/14 19:20:24 INFO util.Utils: Fetching http://192.168.31.160:33039/jars/spark_study ...
- Shell-4--环境变量