Python和Java分别实现冒泡排序

1.基本思想

  冒泡排序的基本思想是对比相邻的元素值。相邻元素值比较,如果满足条件两者就交换,把较小的移动到前面,把较大的移动到后面,这样较小的元素就像气泡一样浮上来了。可以看出,冒泡排序的每一次循环都能确定此次循环中最大值的位置。

 

2.代码实现

  这里使用两层for循环实现。需要指出的是,若假设数组长度为 n,只需要进行 n-1次排序便可确定所有元素的位置,即外层循环 n-1次

  以下为Java实现冒泡排序:

 1 public class BubbleSort {
 2     public static void main(String[] args) {
 3         int arr[] = {9,30,63,4,12,85,24,1,3,15};//需要排序的数组
 4         BubbleSort sorter = new BubbleSort();//创建一个对象(Java中尽量使用对象方法解决问题)
 5         sorter.sort(arr);
 6     }
 7     
 8     // 定义一个 sort 方法,即冒泡排序
 9     public void sort(int arr[]) {
10         for(int i = arr.length - 1;i > 0;i--) {//这里也可以从0~arr.length-1,但下面也许做相应改动
11             for(int j = 0;j < i;j++) {
12                 if(arr[j] > arr[j+1]) {//满足条件则相邻元素进行交换
13                     int temp = arr[j];
14                     arr[j] = arr[j+1];
15                     arr[j+1] = temp;
16                 }
17             }
18             if(i==arr.length-2) {//这里用来输出每一次循环后的数组,以查看排序流程
19             showArray(arr);
20             }
21         }
22         showArray(arr);
23     }
24     
25     // 定义一个 showArray方法,用来输出数组
26     public void showArray(int arr[]) {
27         for(int i:arr) {
28             System.out.println(i+"<");
29         }
30     }
31 }

 

Python中实现冒泡排序也是利用for循环,要注意的是python里input函数会将输入自动转换为字符串,所以需要强制转换类型。另外输出list时,与字符串提示共同输出时需将list字符串转换后输出

以下是Python实现:

 1 # -*- coding: utf-8 -*-
 2 
 3 # 定义冒泡排序方法
 4 def BubbleSort(list1):
 5     for i in range(len(list1), 0, -1):#为保持和java程序一致,这里使用逆序range循环
 6         for j in range(i-1):
 7             if list1[j] > list1[j+1]:#满足条件则相邻元素进行交换
 8                 temp = list1[j]
 9                 list1[j] = list1[j+1]
10                 list1[j+1] = temp
11     return list1
12 
13 
14 # 自行调用
15 if __name__ == '__main__':
16     n = int(input("请输入列表长度:"))#自己输入数组
17     x = []
18     for value in range(n):
19         y = int(input("请输入第" + str(value) + "个列表元素:"))
20         x.append(y)
21     print(x)
22     a = BubbleSort(x)
23     print("最终排序结果为:\n"+str(a))

冒泡排序最关键的就是要掌握  相邻元素比较 这个核心。实现上,语言之间大同小异。

转载于:https://www.cnblogs.com/xiang9286/p/928663676xl.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值