关于冒泡排序方法讨论

[复制链接]
2170|11
 楼主| shenmu2012 发表于 2012-9-17 09:45 | 显示全部楼层 |阅读模式
以下为冒泡排序算法的简答程序
char t,j;    //冒小泡排序法
   for(t=0;t<9;t++)
    for(j=(t+1);j<10;j++)
      if(adc_voltage[j] < adc_voltage[t])
      {      
        adc_temp = adc_voltage[t];
        adc_voltage[t] = adc_voltage[j];
        adc_voltage[j] = adc_temp;
      }

我调试了一下的,貌似很占用时间的,我单片机的主频采用默认的1MHz,想摘到实行玩该程序,到底需要花费多少时间的,这里不用考虑其他中断的影响,大伙给帮忙解决下的啊,谢谢!
comeon201208 发表于 2012-9-17 17:42 | 显示全部楼层
冒大泡的排序法又怎样处理呢?我查查资料的哈。。
figo20042005 发表于 2012-9-18 17:35 | 显示全部楼层
看你对多少个数进行排序了,排序时间是根据两个FOR循环时间决定的,你数越多,需要的时间就越多
figo20042005 发表于 2012-9-18 17:35 | 显示全部楼层
这个你可以反汇编下算出时间来
hisong 发表于 2012-9-21 16:11 | 显示全部楼层
等高手解决吧
gaochy1126 发表于 2012-9-21 23:30 | 显示全部楼层
使用汇编 这样就可以了
vivilzb1985 发表于 2012-9-22 15:22 | 显示全部楼层
这两个for循环需要注意使用的顺序就可以了,不行的话楼主增加主频就可以了
lapeno 发表于 2012-9-22 16:59 | 显示全部楼层
为何不用快速排序?
wjzx111056 发表于 2012-9-23 19:13 | 显示全部楼层
LZ:冒泡排序算法的基本思路:
    对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。
    不知道你用的是什么单片机?如果是msp430的单片机就可以在IAR这个编译环境下看。
happybird21 发表于 2012-9-23 19:45 | 显示全部楼层
for循环次数越多,时间就越长,好多的延迟函数就是采用for循环做的
vivilzb1985 发表于 2012-9-24 13:24 | 显示全部楼层
我结贴算了,谢谢各位的关注的,关于耗时这一块的我在查查其他方面的资料的吧
vivilzb1985 发表于 2012-9-24 13:25 | 显示全部楼层
各位大虾有啥好的建议的话也可继续给我推荐啊,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

4324

帖子

9

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