1. 程式人生 > >一個很容易被坑的點(找出最大最小值並交換)

一個很容易被坑的點(找出最大最小值並交換)



其實程式要寫出來,並不難。只是想走捷徑,就容易誤入歧途。題目如下:
輸入陣列,最大的與第一個元素交換,最小的與最後一個元素交換,輸出陣列。 最開始的程式碼如下:

public class Classic35_1 {
    public static void main(String[] args){
        int[] a = {10,17,23,876,3,67,93,3,32,7,3,23,435};
        int max = 0;
        int min = 0;
        int temp;
//        找到最大最小的位置
        for(int i = 0;i<a.length;i++){
            if(a[i]>a[max])
                max = i;
            if(a[i]<a[min])
                min = i;
        }
//       交換
        temp=a[max];
        a[max]=a[0];
        a[0]=temp;

        temp=a[min];
        a[min]=a[a.length-1];
        a[a.length-1]=temp;
//        輸出
        for(int x : a)
            System.out.print(x+" ");
    }
}


乍一看確實沒有問題,但是當最小最大位置為特殊位置時候,這個程式就不能正常運行了,即最大的元素在最後或者最小的元素在開頭,例如這組資料:1,17,23,876,3,67,93,3,32,7,3,23,435,如果先交換最大值,再交換最小值,那麼得到的結果就是435,17,23,1,3,67,93,3,32,7,3,23,876,這是完全錯誤的。 對於這種臨界條件考慮欠妥,導致第一個程式有問題,這樣還不如使用最原始的方法,如下:

public class Classic35 {
    public static void main(String[] args){
        int[] a = {1,17,23,876,3,67,93,3,32,7,3,23,435};
        int max = 0;
        int min = 0;
        int temp;
//        找到最大的位置
        for(int i = 0;i<a.length;i++){
            if(a[i]>a[max])
                max = i;
        }
//       交換
        temp=a[max];
        a[max]=a[0];
        a[0]=temp;
//                找到最小的位置
        for(int i = 0;i<a.length;i++){
            if(a[i]<a[min])
                min = i;
        }
//       交換
        temp=a[min];
        a[min]=a[a.length-1];
        a[a.length-1]=temp;
//        輸出
        for(int x : a)
            System.out.print(x+" ");
    }
}


相關推薦

一個容易交換

 其實程式要寫出來,並不難。只是想走捷徑,就容易誤入歧途。題目如下: 輸入陣列,最大的與第一個元素交換,最小的與最後一個元素交換,輸出陣列。 最開始的程式碼如下: public class Classic35_1 { public static void mai

E - Period HDU - 1358 字串的週期解釋題意 並且數學邏輯方法解題

For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the

LeetCode:78. Subsets一個數組中所有的子集

Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solution set must not contain dup

LeetCode:155. Min Stack棧中的那個

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) -- Push element x onto stack. pop()

LeetCode:53. Maximum Subarray陣列中和的陣列

         Given an integer array nums, find the contiguous subarray (containing at least one number) which has the l

LeetCode:438. Find All Anagrams in a String相同的子串的下標

Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings consists of l

PHP封裝一個通用的CURL類方法設定、獲取請求頭響應頭處理

通用的一個CURL類方法,設定請求頭、獲取響應頭等! 包括將格式處理成陣列格式,方便直接輸出 /** * 傳送https post請求,也支援http請求,包括header請求 * @param string $url 請求域名 * @

vue + Echarts 填Echarts資料量,導致瀏覽器卡頓

最近使用vue + Echarts 實現vue專案的資料視覺化功能的時候,發現隨著元件的增多,元件裡Echarts繪圖的增多,頁面操作越來越卡頓,點選資料比較大的元件時,Echarts繪圖渲染頁面的速度倒是挺快,但是當我點選切換其他元件統計圖時,出現了讓人難以忍受的卡頓,有

element ui 庫中 表單部分 一個容易忽略的

mod 希望 如果 pro mode 問題 -m form data 如果在使用element-ui1.4.* 版本中的表單時,發現某些字段綁定不了值,或者checkbox在你綁定後一點就全選了或者全部選,又或者表單驗證時候有些字段沒動靜,那麽十有八九是: 1、el-for

中國人,容易利用的一個民族

在這裡,首先我要表達的是對地震災區的受難同胞表示沉痛的哀悼! 大家都知道,08年的中國是多災多難的一年,我們先後經歷了暴雪,騷亂,疾病,鐵路事故,再加上如今的四川大地震。我們能做的,就是盡我們的微薄之力,積少成多,幫助受災的同胞儘早的重建家園,恢復生活 目前,世界各地都在為中

LeetCode:5. Longest Palindromic Substring一個字串中的子迴文串

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of sis 1000. Example 1: Input

一個矩陣中的馬鞍c語言實現

資料結構中的求一個矩陣的馬鞍點 請編寫一個完整的程式,如果矩陣A中存在這樣的一個元素A[i,j]滿足條件A[i,j]是第i行的值最小的元素,且又是第j列中最大的元素,則稱之為該矩陣的一個馬鞍點。 程式碼如下: #include<stdio.h> #d

優雅原點在圓心的圓上的整數點

 package Day31; //圓的方程:x^2+y^2=r^2 //由於預設y=sqrt(r^2-x^2)是double型別 //在判斷y是不是整數 import java.util.*; public class Test { /** * @param

SEO新手容易的13個誤區

容易 esc it培訓 nbsp words 經驗 block 崗位 想想 對於大部分做SEO優化推廣工作的新手來說,由於缺少一定的經驗和知識,容易進入SEO誤區往往會導致事倍功半。這對網站甚至SEO推廣工作都會造成一定不同程度的影響,嚴重的網站被K或者放棄SEO優化工作

pythondict字典相關知識以及例子:生成一個列表,存放100個隨機整數,出現次數多的數字

一、什麼是字典? #字典的使用 #子字典是一個容器類,可以用來儲存資料 #列表儲存資料特點:1、有序的 2、每一個都有一個索引,通過索引可以對資料進行查詢,修改,刪除 #字典儲存資料: key:v

C++ 給定一個長度為N的陣列,一個長的單調自增子序列不一定連續,但是順序不能亂輸出長子序列的長度及對應的子序列

Evelyn QQ: 1809335179 給定一個長度為N的陣列,找出一個最長的單調自增子序列(不一定連續,但是順序不能亂)輸出最長子序列的長度及對應的子序列 #include<iostrea

scrapy的一些容易忽視的模擬登陸,傳遞item等

信息 pan pytho 完成 xtra author back book 多少 scrapy爬蟲註意事項 item數據只有最後一條 item字段傳遞後錯誤,混亂 對一個頁面要進行兩種或多種不同的解析 xpath中contains的使用 提取不在標簽內的文本內容 使用cs

【轉】淺談一個網頁打開的全過程涉及DNS、CDN、Nginx負載均衡等

位置 filters 產生 多種方法 tps windows cnblogs 這就是 廣東 1、概要   從用戶在瀏覽器輸入域名開始,到web頁面加載完畢,這是一個說復雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁加載過程。下面我將依靠自己的經驗,總結一下整個過程

The kth great number multiset應用第k

for begin urn mes etc when ++ multi size The kth great number Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao

c程序設計 8.15寫幾個函數:①輸個職工的姓名和職工號;②按職工號由小到大順序排序,姓名順序也隨之調整;③要求輸入一個職工號,用折半法找出該職工的姓名,從主函數輸入要查的職工號,輸出該職工

xmx ebr ckey ros lbp loj ase vfk cu2 8.15寫幾個函數:①輸個職工的姓名和職工號;②按職工號由小到大順序排序,姓名順序也隨之調整;③要求輸入一個職工號,用折半法找出該職工的姓名, 從主函數輸入要查找的職工號,輸出該職工。 寫的時候為