資料結構 陣列(一) 查詢陣列中第二小的元素

2021-09-11 06:30:41 字數 580 閱讀 1907

第二小的元素

這裡有很多方法可以實現:

方案一:按遞增順序對陣列進行排序,堆排、快排、歸併排序等等都可以達到目的。排序陣列中的前兩個元素是兩個最小的元素。這個解的時間複雜度是o(nlogn)。 關於排序演算法後續會繼續更新。

方案二:掃瞄陣列兩次。在第一次遍歷中找到最小元素。讓這個元素為x,在第二次遍歷中,找到最小的元素大於x,這個解的時間複雜度是o(n)。

方案三:在一次遍歷中找到最小的兩個數,時間複雜度為o(n)

初始化2個最小值,firstmin,secondmin

遍歷所有元素,假如當前元素小於firstmin,那麼將更新firstmin,secondmin.如果小於secondmin直接更新secondmin

具體實現如下:

std::pairsecondsmallest(std::vectorarrays)

else if (value < secondmin && value != firstmin) //小於倒數二的 更新2

}return std::make_pair(firstmin, secondmin);

}

資料結構 二維陣列中的查詢

我們門來看一下題目 在乙個陣列中,每一行都按照從左往右遞增的順序排序。每一列都按照從上到下遞增的順序排列。請完成乙個函式,輸入這樣乙個 我們門來看一下題目 在乙個陣列中,每一行都按照從左往右遞增的順序排序。每一列都按照從上到下遞增的順序排列。請完成乙個函式,輸入這樣乙個整數,判斷陣列中是否含有該整數...

資料結構 陣列(二) 查詢陣列中第k大的數

問題 查詢出一給定陣列中第k大的數。例如 3,2,7,1,8,9,6,5,4 第1大的數是9,第2大的數是8 思考 1.直接從大到小排序,排好序後,第k大的數就是arr k 1 2.只需找到第k大的數,不必把所有的數排好序。我們借助快速排序中partition過程,一般情況下,在把所有數都排好序前,...

尋找陣列中第二小的元素

尋找陣列中第二小的元素 示例 一 先把陣列進行公升序排序 排完序後再進行遍歷比較 public static void main string args 氣泡排序 for int i 0 i arr.length 1 i int secondnum arr 0 for int i 0 isecond...