经典算法之冒泡排序达成示例
发布时间:2021-12-05 12:30:44 所属栏目:教程 来源:互联网
导读:1、算法思想 取第i元素和第i+1个元素做比较,假如第i+1个元素大于第i个元素,则交换两个元素。一直到待排序的集合是有序的为止。假设待排序的元素集合: 5 4 3 1 。 第一次冒泡后的序列:4 3 1 5 第二次冒泡的序列:3 1 4 5 第三次冒泡后的序列:1 3 4 5 N元
|
1、算法思想 取第i元素和第i+1个元素做比较,假如第i+1个元素大于第i个元素,则交换两个元素。一直到待排序的集合是有序的为止。假设待排序的元素集合: 5 4 3 1 。 第一次冒泡后的序列:4 3 1 5 第二次冒泡的序列:3 1 4 5 第三次冒泡后的序列: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 ![]() (编辑:玉林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


