数据结构与算法 -排序
2015-11-29 16:05
369 查看
选择排序 是每一次从待排序的数中找出最小的数,顺序放到数组前面,直道全部数据排序完毕。此排序方法和冒泡排序不一样。冒泡排序是将相邻数依次两两比较,比较一次就要进行一次交换。交换占用时间较多。此算法 每次遍历,只选择最值元素进行交换,这样一次遍历,只需进行一次交换即可,从而避免了其它无价值的交换操作。每次比较只记录了数在数组中的位置,并没有交换。只有在最后一次进行了交换。注意:比较次数。
<pre name="code" class="plain"> for (int pass=0;pass<intArray.length-1;pass++){//外层循环次数, a=pass;for(int i=pass+1;i<intArray.length;i++){//内层循环,比外层循环的数多1if(intArray[a]>intArray[i]){ a=i;}} int b=intArray[pass];intArray[pass]=intArray[a];intArray[a]=b;}最近在学习嵌入式汇编,感觉好麻烦。附上汇编程序:
选择排序 是每一次从待排序的数中找出最小的数,顺序放到数组前面,直道全部数据排序完毕。此排序方法和冒泡排序不一样。冒泡排序是将相邻数依次两两比较,比较一次就要进行一次交换。交换占用时间较多。此算法 每次遍历,只选择最值元素进行交换,这样一次遍历,只需进行一次交换即可,从而避免了其它无价值的交换操作。每次比较只记录了数在数组中的位置,并没有交换。只有在最后一次进行了交换。注意:比较次数。
AREA select,CODE,READONLYENTRYSTARTMOV R0,#4MOV R7,#0LDR R1,=DESMOV R2,#0 ;外层循环计数MOV R5,#1 ;内存循环计数BL LOOP1STOPMOV r0, #0x18 ; angel_SWIreason_ReportExceptionLDR r1, =0x20026 ; ADP_Stopped_ApplicationExitSWI 0x123456 ; ARM semihosting SWILOOP1LDR R3,[R1,R7] ;加载第一个数ADD R0,R7,#4LDR R6, [R1,R7] ;总是存放最小数LOOP2LDR R4,[R1,R0]CMP R6,R4LDRGT R6,[R1,R0] ;若第一个数比第二个数大,把第二个数放到r6中MOVGT R8,R0ADD R5,R5,#1ADD R0,R0,#4CMP R5,#5;比较内层循环次数BLT LOOP2;若未完成,继续循环,否则交换CMP R6,R3STRNE R3,[R1,R8]STR R6,[R1,R7];把最小值R6给第一个数ADD R2,R2,#1;外层循环次数加一ADD R7,R7,#4;指向下一个数MOV R5,R2ADD R5,R5,#1CMP R2,#4BLT LOOP1;未完成,继续循环MOV pc,lrAREA Array1,DATA,READWRITEDES DCD 3,4,3,2,1END ;35416汇编语言代码根据上面java写出,先把java语言写出来,然后对照写出 注意各个寄存器。每条命令可以按条件执行。就像高级语言中的if语句。例如:movne r0,r1 ltrne r0,[r1,#4] 等都可以按条件执行
相关文章推荐
- 数据结构实践——用哈希法组织关键字
- 【数据结构】 哈夫曼树——哈夫曼编码的一个实例
- 《奥赛经典——数据结构篇》 3.1栈
- java数据结构代码记录---归并排序代码
- c语言数据结构实现后缀表达式求值
- pku初期数据结构题解
- JavaScript数据结构 --- 队列
- 2015 ACM/ICPC Asia Regional Shenyang Online C. Minimum Cut[树链剖分]
- 数据结构——双向链表实现,基本操作的C++版
- 二叉排序树的基本操作(建立,中序遍历,查找,删除,插入)
- JavaScript数据结构 ---- 栈
- 数据结构-哈夫曼树
- 树链剖分学习
- 数据结构例程——插入排序之希尔排序
- 数据结构例程——插入排序之直接插入排序
- 数据结构例程——哈希表及其运算的实现
- 数据结构-线索化二叉树
- 代码整洁之道(五)---------------------数据结构与对象
- 2015年大二上-数据结构-串(1)- 顺序串算法库
- 数据结构和算法学习(10)- 2-3-4树