• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            查找數組中第二大的數值

            題目:寫一個函數找出一個整數數組中,第二大的數。【Mirosoft

            解答:
            int FindSecondMaxValue(int src[], int count)
            {
                
            int max = 0;
                
            int secondMax = 0;

                
            if (count==0return secondMax;
                
            if (count==1)
                
            {
                    
            return src[0];
                }

                
            else if (src[0> src[1])
                
            {
                    max 
            = src[0];
                    secondMax 
            = src[1];
                }

                
            else
                
            {
                    max 
            = src[1];
                    secondMax 
            = src[0];
                }


                
            for (int i=2; i<count; ++i)
                
            {
                    
            if (src[i] >= max)
                    
            {
                        secondMax 
            = max;
                        max 
            = src[i];
                    }

                    
            else
                    
            {
                        
            if (src[i]>secondMax)
                        
            {
                            secondMax 
            = src[i];
                        }

                    }

                }

                
            return secondMax;
            }

            算法本身是簡單的,但是一些邊界條件需要注意:
            1.數組的元素數量為1,0個;
            2.數組所有元素的數值相等;
            3.數組元素只有2個不同的數值。

            以上代碼還不是很健壯,不過基本邏輯應該是OK的,以下是測試代碼,測試了相關的邊界條件。
            void testFindSecondMaxValue()
            {
                
            const int array_size = 10;

                
            // 一般情況
                int arr1[array_size]={0-1187335424-56355687-100};
                std::cout 
            << "數組中第二大數為:" << FindSecondMaxValue(arr1, array_size ) << std::endl;

                
            // 數組元素只有2個不同的數值
                int arr2[array_size]={0100000000};
                std::cout 
            << "數組中第二大數為:" << FindSecondMaxValue(arr2, array_size ) << std::endl;

                
            // 數組所有元素的數值相等
                int arr3[array_size]={1111111111};
                std::cout 
            << "數組中第二大數為:" << FindSecondMaxValue(arr3, array_size ) << std::endl;

                
            // 只有0個元素的數組
                
            //int arr4[0];
                
            //std::cout << "數組中第二大數為:" << FindSecondMaxValue(arr4, 0 ) << std::endl;

                
            // 只有1個元素的數組
                int arr5[1]={1};
                std::cout 
            << "數組中第二大數為:" << FindSecondMaxValue(arr5, 1 ) << std::endl;

            }
            不過0數組在VS2005里面已經被禁止掉了,所以arr4編譯是會要報錯的。


            附送一個求數組第二小的元素的查找算法:
            int FindSecondMinValue(int src[], int count)
            {
                
            int min = 0;
                
            int secondMin = 0;

                
            if (count==0return secondMin;
                
            if (count==1)
                
            {
                    
            return src[0];
                }

                
            else if (src[0< src[1])
                
            {
                    min 
            = src[0];
                    secondMin 
            = src[1];
                }

                
            else
                
            {
                    min 
            = src[1];
                    secondMin 
            = src[0];
                }


                
            for (int i=2; i<count; ++i)
                
            {
                    
            if ( src[i]<=min )
                    
            {
                        secondMin 
            = min;
                        min 
            = src[i];
                    }

                    
            else
                    
            {
                        
            if ( src[i] < secondMin)
                            secondMin 
            = src[i];
                    }

                }

                
            return secondMin;
            }
            其實就是反了一下,也沒啥特別的。。。。
            =。=

            posted on 2009-01-06 05:32 楊粼波 閱讀(1340) 評論(0)  編輯 收藏 引用

            成人资源影音先锋久久资源网| 久久精品国产99国产精品亚洲 | 国产精品成人99久久久久91gav| 无遮挡粉嫩小泬久久久久久久| 久久久久精品国产亚洲AV无码| 93精91精品国产综合久久香蕉| 国产999精品久久久久久| 久久久精品2019免费观看| 久久91亚洲人成电影网站| 国产综合精品久久亚洲| 久久无码国产| 午夜精品久久久久久久| 久久久久久久久久久| 性做久久久久久久| 久久夜色精品国产噜噜噜亚洲AV | 国产精品一久久香蕉国产线看| 无码人妻精品一区二区三区久久| 免费久久人人爽人人爽av| 日本欧美久久久久免费播放网| 精品久久久无码人妻中文字幕| 伊人久久大香线焦AV综合影院 | 国内精品久久久久影院老司 | 久久精品国产亚洲αv忘忧草| 免费久久人人爽人人爽av| 久久亚洲国产成人精品性色| 99久久99久久精品免费看蜜桃| 伊人久久免费视频| 亚洲欧洲精品成人久久曰影片| 成人综合伊人五月婷久久| 一本色道久久综合| 91麻豆精品国产91久久久久久| 久久久噜噜噜久久| 无码久久精品国产亚洲Av影片| 久久午夜电影网| 久久久久女人精品毛片| 亚洲欧美日韩精品久久| 一本一本久久A久久综合精品| 国产精品天天影视久久综合网| 国产成人综合久久精品红| 99久久人妻无码精品系列| 性做久久久久久久久老女人|