手机版
你好,游客 登录 注册
背景:
阅读新闻

经典算法之冒泡排序实现示例

[日期:2019-04-14] 来源:Linux社区  作者:webDepOfQWS [字体: ]

1、算法思想

取第i元素和第i+1个元素做比较,假如第i+1个元素大于第i个元素,则交换两个元素。一直到待排序的集合是有序的为止。假设待排序的元素集合: 5 4  3 1 。

  1. 第一次冒泡后的序列:4 3 1 5
  2. 第二次冒泡的序列:3  1 4 5
  3. 第三次冒泡后的序列:1 3 4 5

N元素序列一共需要比较N-1轮。第i个元素需要比较N-i-1次。需要两层循环实现。

2、代码实现

2.1、Python 3.x

#!coding:utf-8
#冒泡排序
#www.linuxidc.com
#输入:待排序的元素集合
#输出:已排序元素集合
def bubble_sort(lst):
    lst_len=len(lst)
    #控制循环次数,N个元素需要N轮比较
    for i in  range(lst_len-1):
        #第n个元素需要比较(N-n-1)次
        for j in  range(lst_len-i-1):
            if lst[j]>lst[j+1]:
                #如果第j个元素大于j+1,则交换
                lst[j],lst[j+1]=lst[j+1],lst[j]
    return lst

if __name__ == "__main__":
    a=bubble_sort([1,5,8,9,7,19,3,0])
    print(a)

运行结果:

[0, 1, 3, 5, 7, 8, 9, 19]

经典算法之冒泡排序实现示例

2.2、shell

#!/bin/bash
function bubbleSort()
{
    declare -a lsts=$1
    #获取数组的长度
    len=`expr ${#lst[*]} - 1`
    for i in `seq  0 ${len}`
        do
            jtmp=$((${len} - ${i} -1))
            for j in `seq 0 ${jtmp} `
                do
                if (( ${lst[j]} > ${lst[j+1]} ));then
                    tmp=${lst[j]}
                    lst[j]=${lst[j+1]}
                    lst[j+1]=${tmp}               
                fi
                done
        done
    echo "sorted list is :${lst[*]}"
}
lst=(1 9 19 55 3 10 6 99 0)
bubbleSort  "${lst[*]}"

运行结果:

sorted list is :0 1 3 6 9 10 19 55 99

经典算法之冒泡排序实现示例

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-04/158101.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款