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老头儿的命 ...
随机推荐
- java 小心使用float和double他可能不如你所想
public static void main(String[] args) { double funds=1.00; ; // ; ;funds>=price;price+=.){ funds ...
- Python(四) 列表元组
- oracle删除dbf导致的oracle工具不能正常使用
1.使用cmd命令登录Oracle:sqlplus / as sysdba;就可以,中间两个空格.2.删除了dbf导致Oracle工具不能正常使用解决办法(oracle initialization ...
- ios下面的按钮和inout框
在ios系统中,按钮和输入框,会默认给你加一个圆角和阴影,可以用css去掉这个自带的属性 input[type=button], input[type=submit], input[type=file ...
- kbmmw 做REST 服务签名认证的一种方式
一般对外提供提供REST 服务,由于信息安全的问题, 都要采用签名认证,今天简单说一下在KBMMW 中如何 实现简单的签名服务? 整个签名服务,模仿阿里大鱼的认证方式,大家可以根据实际情况自己修改. ...
- liunx Ubuntu 设置IP、网关、DNS
说明:在网上给的教程上面通常会有这样的一个误导思路,按照配置文件设置后会不生效的问题,甚至没有一点效果,经过排查发现Linux下设置IP这个话题的入口线索应该分为两种:1为Server版,2为Desk ...
- s6-2 UDP
User Datagram Protocol UDP 是一个无连接的(connectionless)的传输层协议 UDP传输数据段,无须建立连接 UDP 在 RFC 768中描述 很多 ...
- 【pycharm 警告】unittest RuntimeWarning: Parent module ” not found while handling absolute import
Pycharm 2016.2执行单元测试遇到如下问题: RuntimeWarning: Parent module ‘YOUR_MODULE_HERE’ not found while handlin ...
- HPS基本概念及其设计
DE1-SOC开发版上的FPGA在一个基于ARM的用户定制系统(SOC)中集成了分立处理器(HPS).FPGA和数字信号处理(DSP)功能.HPS是基于ARM cortex-A9双核处理器,具有丰富的 ...
- KMP string pattern matching
The function used here is from the leetcode. Details can be found in leetcode problem: Implement str ...