查詢乙個陣列中第N大的數,並與第一大的數交換

2021-08-25 01:15:49 字數 924 閱讀 4094

一道演算法題:

查詢乙個陣列中第

n大的數,並與第一大的數交換

1.先寫乙個方法,

查詢乙個陣列中第

n大的數

///

///while input an int array and an int number n, the method will return the n'th big number in the array

//////the int array

///the int number

///public

static

intfindnumber

(int

array

, intn)

else

} if(

currentnode.value

<

array[i

]) }

} if

(n>

numberlink.count||n

<1)

linkedlistnode

outputnode

=numberlink.first;

intcount=1

; while

(count

return

outputnode.value;

} 2.根據

findnumber

方法寫出解決該問題方法

public

static

int

replacenumber

(int

array

,intn)

elseif(

array[i

] ==

biggestnumber)

}return

array;

}

陣列中第k大的數

方法 有兩種。參見 第一種 使用排序 快速排序 將陣列排序後,第k大的數就在第k個位置上。演算法複雜度 o n logn 第二種 類似快速排序的變種。通過二分的思想,找到第k大的數字,而不必對整個陣列排序。從陣列中隨機選乙個數t,通過讓這個數和其它數比較,我們可以將整個陣列分成了兩部分並且滿足,在將...

學習筆記47 找出n個數中第k大的數

用基於比較的排序演算法,先做排序再去取數,時間複雜度最簡是o nlogn 但是有一種方法可以達到o n 的複雜度,就是遞迴的思想,用快速排序的方法,但是每次都只需要查詢一半。下面是python實現 def findnum a,first,last,dest iffirst last return a...

尋找陣列中第n大的元素

給定乙個陣列,找出該陣列中第n大的元素的值。其中,1 n length。例如,給定乙個陣列a 當n 1時,返回9。我拿到這個問題的地中思路就是先排序,然後通過位置索引相應的第n大的元素。我使用的是o nlog n 級別的排序演算法,所以這種方法的時間複雜度應該也是o nlog n 級別的。那這個問題...