冒泡法找出数组里最大值和最小值,请高手看一下对不对?

2020-01-16 18:31发布

只需要找出最大值和最小值就可以了,最后的结果是a[0]为最小,a[9]为最大,试了几次,没有问题,不知道这种方法行不行的通,看到网上的冒泡法都要循环更多次,给修改了一下。
void testS(void)  
{  
        unsigned char a[10]={240,208,241,98,100,21,187,237,228,21};
    unsigned char t=0,j=0;
        for(j=0;j<9;j++)          //每趟比较j+1次  
                if(a[j]>a[j+1])          //从左至右依次比较两个相邻的数,将小数放在前面,大数放在后面  
            {  
                t=a[j];  
                a[j]=a[j+1];  
                a[j+1]=t;  
            }
        for(j=8;j>0;j--)          //每趟比较j-1次  
                if(a[j]<a[j-1])          //从右至左依次比较两个相邻的数,将小数放在前面,大数放在后面  
            {  
                t=a[j];  
                a[j]=a[j-1];  
                a[j-1]=t;  
            }
        for(t=0;t<10;t++)
                {                                                    
                        DISP_BL(t,a[t]);  //送至数码管显示
                        j=20;
                        while(j)
                        {
                                Delay(200);        //延时
                                j--;       
                        }
                }
        j=20;
        while(j)
        {
                Delay(200);        //延时
                j--;       
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
40条回答
takashiki
1楼-- · 2020-01-20 05:54
wye11083 发表于 2016-11-10 13:02
前几天写了个程序,对几十W个文件按大小排序,冒泡冒了4个小时


你这用的啥语言啊,还冒泡,要善用库函数,不要啥都自己造轮子,尤其是拉火车你造的还是自行车轮子……
C++中STL就有std::sort标准的快速排序,其他语言或多或少都有。C语言好像得自己造,但是你可以克隆别人已经造好的。要想数据量大而且快,请自行搜索“堆排序
就按非常基本的插入排序(注意:比较慢!),几十W个文件按大小排序,也要不了几分钟。数据量小的时候,插入排序还是可以的。

PS:除了教科书和考试以外的场合,请在其他任何时候都不要使用冒泡排序。这个方法只不过回字的N种写法中的那个最不常用的那个凑字数的。
takashiki
2楼-- · 2020-01-20 07:47
 精彩回答 2  元偷偷看……
wwoneway
3楼-- · 2020-01-20 13:37
wxdn 发表于 2016-11-10 09:23
我需要的结果是去掉最大值和最小值,得出另外的8个有效值。

一趟循环找到最大值和最小值的下标,然后输出其他8个数就可以了
RAMILE
4楼-- · 2020-01-20 17:02
单片机里面冒泡还是很实用的,把ADC数据掐头去尾,对中间的2/4算平均
takashiki
5楼-- · 2020-01-20 21:17
RAMILE 发表于 2016-11-11 10:59
单片机里面冒泡还是很实用的,把ADC数据掐头去尾,对中间的2/4算平均

这个要排序?看来你还得修炼啊。
我教你怎么算平均,一次循环完成,可以找出最大值、最小值、和。然后(和-最大值-最小值)/(总数-2)得到平均值。
我跟您说,赶紧抛弃冒泡吧,都不是初学者了,实在想简单就插入排序啊,虽然慢但也至少比冒泡省一半时间。
canspider
6楼-- · 2020-01-20 21:41
takashiki 发表于 2016-11-11 06:55
你这用的啥语言啊,还冒泡,要善用库函数,不要啥都自己造轮子,尤其是拉火车你造的还是自行车轮子……
C ...

标准C库有qsort,bsearch这些
只不过玩板子的码农野路子出来的
对这些不感冒

一周热门 更多>