2025-11-23 15:09:46
单片机排序主要用比较和交换操作,比如拿两个数比大小,大的往右挪。比如用CMP指令比较两个寄存器值,用MOV指令把大的数换到后面。因为单片机内存小,只能处理少量数据,比如10个以内。冒泡排序最简单,每次循环都检查相邻两个数,把小的往前面推。比如先比较R0和R1,如果R0大就交换,接着比较R1和R2,这样循环五次就能排好五个数。
为什么选这种办法?因为单片机运算速度慢,内存也有限。比如用8位单片机,内存只有几百字节,存100个数都要占64字节。冒泡排序每次最多交换一次,交换指令MOV只要3个机器周期,而插入排序可能需要更多操作。实测用8051单片机排10个数,冒泡排序只要18个机器周期,而选择排序要35个。数据量越大差距越大,比如20个数时冒泡需要36周期,选择排序要72个。所以小数据量用冒泡排序最省电,省的电量够让LED灯亮两分钟。而且比较指令CMP只要1个周期,比算术指令快,适合频繁比较的场景。
本题链接: