Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Given an array of N elements find the K biggest elements and the K smallest elements
- function lol(N, K){
- var array = [];
- for (var i=0; i<N; i++){
- array[i] = Math.random()*1000>>0
- }
- console.log(array);
- var sorted = array.slice().sort(function(a,b){return a-b});
- console.log(sorted);
- var result = {
- '>=': {
- array: [],
- indexes: []
- },
- '<=': {
- array: [],
- indexes: []
- }
- };
- for (var i=0; i<array.length; i++){
- var element = array[i];
- for (var l in result){
- var inserted = false;
- var sortedArray = result[l].array;
- var indexesArray = result[l].indexes;
- for (var j=0; j<sortedArray.length; j++){
- if (condition(l, sortedArray[j], element) && !inserted){
- sortedArray.splice(j, 0, element);
- indexesArray.splice(j, 0, i);
- j++;
- inserted = true;
- }
- }
- if (!inserted){
- sortedArray.push(element);
- indexesArray.push(i);
- }
- if (sortedArray.length>K)
- while(sortedArray.length!==K){
- sortedArray.pop();
- indexesArray.pop();
- }
- }
- }
- var min = sorted.slice(0, K);
- var max = sorted.slice(Math.max(sorted.length - K, 1));
- max.sort(function(a,b){return b-a})
- console.log('MIN', result['>='].array, result['>='].indexes, result['>='].array.join('')===min.join(''));
- console.log('MAX', result['<='].array, result['<='].indexes, result['<='].array.join('')===max.join(''));
- }
- function condition(condition, a, b){
- if (condition==='>=')
- return a>=b;
- if (condition==='<=')
- return a<=b;
- if (condition==='>')
- return a>b;
- if (condition==='<')
- return a<b;
- }
- lol(10, 5);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement