一道演算法題:
查詢乙個陣列中第
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 級別的。那這個問題...