硬汉嵌入式论坛

 找回密码
 立即注册
查看: 979|回复: 7
收起左侧

有没有比冒泡更快的排序算法?

[复制链接]

79

主题

191

回帖

428

积分

高级会员

积分
428
发表于 2022-3-2 19:50:43 来自手机 | 显示全部楼层 |阅读模式
ADC采1024个数据后大小排序,常用的冒泡算法处理大量数据感觉效率太低,C库自带的qsort也试过了,感觉比冒泡好点,还有没有更快的算法?
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

积分
23
发表于 2022-3-2 20:52:45 | 显示全部楼层
插入排序通常会比冒泡快点,如果想要尽量快不在乎内存消耗可以试试快速排序
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107217
QQ
发表于 2022-3-3 09:39:13 | 显示全部楼层
新版的DSP库也带,可以试试那个最优。

堆排序,插入排序,选择排序,归并排序,快速排序,双调排序,冒泡排序等
  1. void arm_sort_f32(
  2.   const arm_sort_instance_f32 * S,
  3.         float32_t * pSrc,
  4.         float32_t * pDst,
  5.         uint32_t blockSize)
  6. {
  7.     switch(S->alg)
  8.     {
  9.         case ARM_SORT_BITONIC:
  10.         arm_bitonic_sort_f32(S, pSrc, pDst, blockSize);
  11.         break;

  12.         case ARM_SORT_BUBBLE:
  13.         arm_bubble_sort_f32(S, pSrc, pDst, blockSize);
  14.         break;

  15.         case ARM_SORT_HEAP:
  16.         arm_heap_sort_f32(S, pSrc, pDst, blockSize);
  17.         break;

  18.         case ARM_SORT_INSERTION:
  19.         arm_insertion_sort_f32(S, pSrc, pDst, blockSize);
  20.         break;

  21.         case ARM_SORT_QUICK:
  22.         arm_quick_sort_f32(S, pSrc, pDst, blockSize);
  23.         break;

  24.         case ARM_SORT_SELECTION:
  25.         arm_selection_sort_f32(S, pSrc, pDst, blockSize);
  26.         break;
  27.     }
  28. }
复制代码



回复

使用道具 举报

5

主题

133

回帖

148

积分

初级会员

积分
148
发表于 2022-3-3 11:35:40 | 显示全部楼层
如果ADC位数不多,直接开个大数组,ADC值当数组下标,数组内存次数
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
 楼主| 发表于 2022-3-3 13:00:12 来自手机 | 显示全部楼层
eric2013 发表于 2022-3-3 09:39
新版的DSP库也带,可以试试那个最优。

堆排序,插入排序,选择排序,归并排序,快速排序,双调排序,冒 ...

这个必须试哈。。。
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
 楼主| 发表于 2022-3-3 13:04:24 来自手机 | 显示全部楼层
无关风月 发表于 2022-3-3 11:35
如果ADC位数不多,直接开个大数组,ADC值当数组下标,数组内存次数

这方法也不错,就是太耗空间,小RAM的MCU估计玩不起。
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
 楼主| 发表于 2022-3-3 22:42:36 来自手机 | 显示全部楼层
eric2013 发表于 2022-3-3 09:39
新版的DSP库也带,可以试试那个最优。

堆排序,插入排序,选择排序,归并排序,快速排序,双调排序,冒 ...

下载最新版的DSP库看了看,还不会用,看函数名都是什么xxx_sort_f32(),难道只能处理浮点数据排序?uint16类型的数据排序搞不了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107217
QQ
发表于 2022-3-4 00:40:13 | 显示全部楼层
天马行空 发表于 2022-3-3 22:42
下载最新版的DSP库看了看,还不会用,看函数名都是什么xxx_sort_f32(),难道只能处理浮点数据排序?uint1 ...

这个分类函数确实仅做了个浮点版。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-21 17:10 , Processed in 0.176416 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表