`
hellojinjie
  • 浏览: 30082 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    快速排序.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实现插入排序.rar

    此压缩包文件“Python实现插入排序.rar”包含一个名为“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代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用...

    选择排序,冒泡排序,插入排序,归并排序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插入排序.docx

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

    python-3.11.2-arm64版本

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

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

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

    python常用排序算法汇总

    # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() #计数排序 # sort.quickSort() #快速排序 该排序算法把每次的排序结果都列出来,可供初学...

    Python实现的直接插入排序算法示例

    在这个代码中,我们首先定义了作者`author`和一个待排序的列表`L`。这个列表包含七个无序的整数。 ```python def direct_insert_sort(numbers): for i in range(1, len(numbers)): #temp变量指向尚未排好序元素...

    python-十大排序算法之插入排序

    python python_十大排序算法之插入排序

    python3.7-arm64安装包.deb

    "python3.7-arm64安装包.deb" 是一个专门为这种架构编译的Python 3.7版本的安装包,以DEB格式提供,这是Debian和Ubuntu等基于Debian的Linux发行版使用的软件包管理系统。 DEB包是一种包含软件及其依赖关系的文件,...

    直接插入排序python'.rar

    在Python中实现直接插入排序,我们可以使用一个for循环遍历待排序的列表,然后用一个while循环来找到每个元素的正确位置,并将之前的所有元素向右移动。以下是一个简单的Python代码实现: ```python def insertion_...

Global site tag (gtag.js) - Google Analytics