5 第k大元素

2021-08-08 04:49:31 字數 958 閱讀 7563

2017.9.14

昨天做了一整天的題。。。。。。

首先使用了氣泡排序,我知道會超時。但還是做了一遍,心想複習一下舊的知識也是極好的。於是,果然超時了。但是毫不氣餒。

想,要不用快速排序試一試。但是自作聰明的以為這題一定是在考堆排序。

然而堆排序是我最不會的排序方式,但還是下定決心開始學習。

好不容易學會了之後,果然超時,而且絲毫顯示不出相對於氣泡排序的優點。

我心裡想著,一定是我採用的結構不對。不用樹的結構了,用陣列的結構。

一通忙活之後,果然還是超時。我真的是就不淡定了。

但是窮則思變。

最後的最後,我說要不還是試一試牛乎乎的快排吧。

卻弱智的發現,我連快排的方法都記得有些模糊了。

遞迴呼叫的時候,引數也出現了一些失誤。真的是要被這個心裡覺得很簡單的題虐慘了。

不過今天早晨一來實驗室,用了2分鐘,結果就出來了。還是非常開心的呢。

class solution 

int low = 0;

int height = nums.length-1;

int flag = quicksort(nums,low,height);

k = nums.length - k + 1;

while(flag != k-1)

else

}return nums[k-1];

}public static int quicksort(int nums,int low,int height)

nums[height] = nums[low];

height--;

while(low < height && nums[height] > tmp)

nums[low] = nums[height];

}nums[low] = tmp;

return low;

}};

5 第k大元素

題目描述 在陣列中找到第k大的元素 樣例 給出陣列 9,3,2,4,8 第三大的元素是 4 給出陣列 1,2,3,4,5 第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此類推 挑戰 要求時間複雜度為o n 空間複雜度為o 1 注意事項 你可以交換陣列中的元素的位置 1.使用選擇排序進...

第k大元素

在陣列中找到第k大的元素 最先想到的是簡單排序,但是簡單排序超時,於是想到改造快排,快排的思想是每次確定乙個元素在陣列中的下標,如果確定的下標為k那該元素為k大,若下標大於k,第k大在改下標之前.class solution public int pat int nums,int start,int...

第K大元素

在陣列中找到第k大的元素。給出陣列 9,3,2,4,8 第三大的元素是4 給出陣列 1,2,3,4,5 第一大的元素是5,第二大的元素是4,第三大的元素是3,以此類推 要求時間複雜度為o n 空間複雜度為o 1 如果不考慮時間複雜度和空間複雜度,這道題目有很多種方法,利用一種排序演算法將陣列倒敘排序...