AT&T汇编之冒泡排序

冒泡排序,这个已经很多年没有写过的算法,今天没事干用AT&T汇编实现了一遍,下面就来说说怎么用汇编来实现这个冒泡排序算法。

示例数组: 11, 9, 8, 8, 7, 10

冒泡排序的思想就是两两交换,直到数组有序为止。

过程分析:

1st:   9, 11
	   9, 8, 11
	   ...
	   9, 8, 8, 7, 10, 11     冒泡出了一个最大的数字11
2nd:   8, 9
	   8, 8, 7, 9, 10, 11     冒泡出了第二大的数字10(这里比较巧合,9正好是第三大的数字,无视)
3rd:   8, 7, 8, 9, 10, 11     第三大9
4th:   7, 8, 8, 9, 10, 11     8
5th:   7, 8, 8, 9, 10, 11     没有发生交换,已然有序,直接终结算法

每次交换一轮可冒泡出一个最大的数字,对于长度为N的数组,只需交换N-1轮即可。
每交换一轮,下一轮会少一次交换。
如果某一轮没有发生交换,说明数组已经有序,直接终结算法。

综上,需要用双重循环,O(N^2)的算法来实现。

首先声明,本文对于数组有两种表示法,seq表示法,下标从1开始;index表示法,下标从0开始。伪代码一律用seq表示法,实现代码由于使用C++或者ASM,故需要转换为index表示法。

##方法1:

首先我们用seq表示法和index表示法来求出i和j的界限:

** seq_i(1, len-1)

#seq: i=1,max_j=len-1  i&
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值