冒泡排序改进+投票法优化数据


在冒泡排序的每趟扫描中可能使当前有序区扩充多个记录.即较大缩小无序区范围,而非递减1,以此减少排序趟数。事实证明,冒泡排序占用内存小,非常适合MCU中运行,效果也很好,算法如下:

void BubbleSort3(int *A, int len)
{
    int j;
    int tmp;
    int flag = len - 1;
    int pos;
    while(flag>0)
    {
        pos = 0;        // 不要漏了该条赋值语句。否则会陷入无限循环。
        
        for(j=0; jA[j+1])   // 如果没有交换,则不会进入该if分支,pos还是=0,说明已经排好序,while循环才会结束
            {
                tmp = A[j];
                A[j] = A[j+1];
                A[j+1] = tmp;
                pos = j;           // 记录最后一次交换的位置
            }
        }
        flag = pos;         // 把位置赋给flag,用于判断无序区是否还有元素
    }
}

--------------------------------------------

对任一数组A,采用BubbleSort3(A,len)可完成排序,之后对新数组只要去头去尾留中间数据,再做平均即可完成投票法的思路。

点击数: 153   打印  添加到收藏   发布时间: 2021-06-12




上一篇:光的偏振性检测方法及理解
下一篇:耐压值高的电容为何做不上去





» 相关内容
  光的偏振性检测方法及理解
  netFrame版本对数组最大长度的..
  LC并联谐振用于模拟混频详解
  条形磁铁的磁场方向判断方法
  PCIE开关和桥接的区别
  精密电阻快速匹配方法
  二次曲面参数及flashlight效果
  AHP算法之matlab代码
  LVDS需要注意的几个点
  阴阳与男女之区别
  四象限光电探测器的位置公式
  外触发获取数据实现原理
  自定义USB设备供电不足最终解..
  USB设备连接异常现象
  MCU程序中变量过多引发内存不..