6个16位数据如何快速增序排序?(汇编)

[复制链接]
3627|7
 楼主| jacksult 发表于 2008-8-19 14:47 | 显示全部楼层 |阅读模式
 CBLOCK  60H
    1L  ;1
    1H  ;2
    2L  ;3
    2H  ;4
    3L  ;5
    3H  ;6
    4L  ;7
    4H  ;8
    5L  ;9
    5H  ;10
    6L  ;11
    6H  ;12
 ENDC
   如上所示,1L,1H为第一个数的高8位和低8位
ayb_ice 发表于 2008-8-19 16:34 | 显示全部楼层

不是有什麼冒泡程序嗎

mohanwei 发表于 2008-8-19 17:30 | 显示全部楼层

小数据量还是冒泡最快。

天雨粟 发表于 2008-8-19 20:54 | 显示全部楼层

是否可以这样?

先用C编写源程序,再编译它,即可得汇编程序,适当修改应该就可以了,未试过,楼主可以试一试,再贴上来共同学习.
unsigned int array[6]={0x1009,0x1211,0x201,0x807,0x605,0x403};

 main(){
    unsigned int temp;
    unsigned char i,j;
    for(i=0;i<5;i++)
        for(j=0;j<5-i;j++)
            if(array[j]>array[j+1]){
                   temp=array[j];
                   array[j]=array[j+1];
                   array[j+1]=temp;
                   }
      while(1);
    }
wacke 发表于 2008-8-19 21:51 | 显示全部楼层

一看就知道是作业题。

 楼主| jacksult 发表于 2008-8-20 09:39 | 显示全部楼层

呵呵,谢谢大家的指点

  呵呵,谢谢大家的指点
  我不是学生了,已经工作了,忘了说我用的是PIC单片机并且用的是汇编,我怕用C语言写的程序超过单片机的容量,所以用的是汇编,现在遇到的问题就是我上面说的,现在问题是不管是什么排序方法,都要求代码小速度尽量快.我现在写的可以完成了,但是代码达到了70多行,大家好有什么好的方法吗?
gyt 发表于 2008-8-20 12:09 | 显示全部楼层

现在还有人为节省几条指令的空间伤脑筋?

不应该啊。
农民讲习所 发表于 2008-8-20 12:12 | 显示全部楼层

写入的时候就排序

您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

57

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部