TypeScript

by tanya_22

TypeScript

function quickSearch(arr) {
  // debugger;
  if (arr.length < 2) {
  	return arr;
  }
  
	const supportingEl = arr[0];
	const less = arr.filter(item => item < supportingEl);
  const more = arr.filter(item => item > supportingEl);
  return [...quickSearch(less), supportingEl, ...quickSearch(more)];
}

function quickSearch2(arr) {
  if (arr.length < 2) {
  	return arr;
  }
  
	const supportingEl = arr[0];
  const less = [];
  const more = [];
  
  for (let i = 1; i < arr.length; i++) {
		if (arr[i] <= supportingEl) {
    	less.push(arr[i]);
    } else {
    	more.push(arr[i]);
    }
  }
  return [...quickSearch2(less), supportingEl, ...quickSearch2(more)];
}

function quickSearch3(arr) {
  if (arr.length < 2) {
		return arr;	
	}
  
	let pivot = arr[Math.floor(arr.length / 2)];
	const less = [];
	const greater= [];
	
	for (let i = 0; i < arr.length; i++) {
		if (arr[i] === pivot) continue;
		if (pivot >= arr[i]) {
			less.push(arr[i]);
		} else {
			greater.push(arr[i]);
		}
	}
  
  return [...quickSearch3(less), pivot, ...quickSearch3(greater)];
}

/* console.time('quickSearch');
console.log(quickSearch([3,14,1,7,9,8,11,6,4,2]));
console.timeEnd('quickSearch');*/

/* console.time('quickSearch2');
console.log(quickSearch2([3,14,1,7,9,8,11,6,4,2, 11, 11]));
console.timeEnd('quickSearch2'); */

console.time('quickSearch3');
console.log(quickSearch3([3,14,1,7,9,8,11,6,4,11, 11, 2]));
console.timeEnd('quickSearch3');