`
hellojinjie
  • 浏览: 30145 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python 写的一个插入排序,另附 ARM 代码

阅读更多
好久没写算法什么的,竟然生疏了,多多练习下。


#!/usr/bin/env python
# coding:utf8

class InsertSort(object):
    
    data = [21, 32, 12, 54, 6, 9, 22, 11, 42, 31]

    def sort(self):
        for i in range(1, len(self.data)):
            for j in range(i, 0, -1):
                if self.data[j] >= self.data[j - 1]:
                    break
                else:
                    tmp = self.data[j]
                    self.data[j] = self.data[j - 1]
                    self.data[j - 1] = tmp


    @staticmethod
    def main():
        insertSort = InsertSort()
        print 'before sorting...'
        print insertSort.data
        
        insertSort.sort()
        
        print
        print 'after sorting...'
        print insertSort.data

if __name__ == '__main__':
    InsertSort.main()



ARM 代码就是这次作业了,
    area text, code, readonly
    
num equ 20 * 4          ; numbers to be sort

    entry           ; insert sort
 
start
    ldr r0, =src    ; data to be sort
    mov r2, #num
 
sort
    mov r3, #4      ; for i in range(1, len(self.data)):

sort_s
    cmp r3, r2
    BMI for_one
    swi 11
    
for_one
    mov r4, r3      ; for j in range(i, 0, -1):
    
for_one_s
    add r4, r4, r0
    ldr r5, [r4]
    sub r4, r4, #4
    ldr r6, [r4]
    cmp r5, r6      ; if self.data[j] >= self.data[j - 1]:
    strmi r5, [r4]
    strmi r6, [r4, #4]
    subs r4, r4, r0
    beq return_sort ; break
    b for_one_s     ; else: continue

return_sort
    add r3, r3, #4
    b sort_s    

       
    area mydata, data, readwrite

src dcd 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4

    end

对照着 python 代码写汇编的代码就很简单了。

中间调试的时候由于 subs r4, r4, r0
sub 后面的 s 忘了,运行的时候就不影响 CPSR 导致后面的判断失效。




参考:http://zh.wikipedia.org/zh/插入排序
  • 大小: 69.1 KB
1
0
分享到:
评论

相关推荐

    插入排序.py python实现的排序

    插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入排序.py python实现的排序插入...

    python插入排序3个类似思路之自己动手.py

    python插入排序三个类似思路,初学者,数据结构学习者

    完整详细版Python全套教学课件 第04-A节 插入排序.pptx

    插入排序算法的主要思想是,每次从未排序的序列中拿出一个元素,将其插入到已经排好序的序列中合适的位置,直至全部数据排序完成。 插入排序算法的原理: 在未排序序列中,构建一个子排序序列,直至全部数据排序...

    快速排序.py python代码实现

    快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python...

    Python3实现插入排序算法(源代码)

    它的基本思想是通过构建一个有序序列,每次从未排序的数据中取出一个元素,在已排序序列中从后向前扫描,找到适当位置并插入。这种排序方式与人们日常生活中对扑克牌进行排序的过程类似,因此易于理解和实现。 ####...

    Python版数据结构与算法-排序算法源代码,实现了冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序源代码

    Python实现时,通常使用一个嵌套循环,外层遍历未排序部分,内层找到插入位置并将元素插入。 4. **希尔排序(Shell Sort)**:希尔排序是一种改进的插入排序,通过将待排序序列分为多个子序列来减少元素的移动次数...

    使用Python进行插入排序、选择排序、冒泡排序、合并排序、快速排序、堆排序

    冒泡排序代码,使用 Python 进行插入排序、选择排序、冒泡排序、合并排序、快速排序、堆排序的代码。 插入排序是一种简单的排序算法,通过构建有序序列,将未排序的元素逐一插入到已排序的部分。该算法适用于小规模...

    直接插入排序-算法领域中直接插入排序算法详解与Python实现

    文中给出的Python代码清晰展示了直接插入排序的具体实现步骤。文章还对直接插入排序的时间复杂度、空间复杂度以及稳定性进行了详细分析。 适用人群:适用于初学者或者希望深入了解基本排序算法的程序员。 使用场景及...

    Python实现插入排序.rar

    此压缩包文件“Python实现插入排序.rar”包含一个名为“Python实现插入排序.py”的源代码文件,很显然,该文件是为了演示如何用Python编写插入排序的算法。 插入排序的基本思想是,将未排序的元素逐个插入到已排序...

    归并排序.py 使用python代码实现

    归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用...

    选择排序,冒泡排序,插入排序,归并排序Python代码

    选择排序,冒泡排序,插入排序,归并排序Python代码

    选择排序python代码

    排序算法中,选择排序非常常见,本资源是选择排序的python代码

    选择排序.py 使用python实现的代码

    选择排序.py 使用python实现的代码选择排序.py 使用python实现的代码选择排序.py 使用python实现的代码选择排序.py 使用python实现的代码选择排序.py 使用python实现的代码选择排序.py 使用python实现的代码选择排序...

    希尔排序.py 使用python实现的代码

    希尔排序.py 使用python实现的代码希尔排序.py 使用python实现的代码希尔排序.py 使用python实现的代码希尔排序.py 使用python实现的代码希尔排序.py 使用python实现的代码希尔排序.py 使用python实现的代码希尔排序...

    Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例

    本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下: #!/usr/bin/python # coding:utf-8 #直接插入排序 def insert_sort(list): for i in range(len(list))...

    python-3.11.2-arm64版本

    Python 3.11.2 arm64版本是指针对基于ARM架构64位处理器系统的Python编程语言发行版; 版本号:3.11.2 表示这是Python 3系列中的第3.11大版本的第二个维护更新,通常包含了自3.11.0发布以来发现的安全修复、错误修正...

    Python通讯录程序代码

    实现通讯录功能,与加上GUI图形界面来实现这个通讯录功能与加上GUI图形界面来实现这个通讯录功能Python通讯录程序代码Python通讯录程序代码Python通讯录程序代码Python通讯录程序代码Python通讯录程序代码Python...

    Python插入排序.docx

    其工作原理类似于人们日常生活中整理牌时所采用的方法:每次从未排序的部分取出一个元素,然后将该元素插入到已排序部分的适当位置,使已排序部分始终保持有序状态。 #### 二、算法步骤 1. **初始化**:假设数组的...

    选择排序22.py python对选择排序的代码实现

    选择排序22.py python对选择排序的代码实现选择排序22.py python对选择排序的代码实现选择排序22.py python对选择排序的代码实现选择排序22.py python对选择排序的代码实现选择排序22.py python对选择排序的代码实现...

    通过python实现一个堆排序示例代码.zip

    堆排序(Heap Sort)是一种基于堆数据结构的比较排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于...压缩包文档记录的是一个使用Python实现堆排序的示例代码。

Global site tag (gtag.js) - Google Analytics