Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -----------------------------
- EVEN OR ODD
- -----------------------------
- function isEven(value){
- if (value % 2 == 0){
- return true;
- }
- else
- return false;
- }
- -- the function returns one value; either it returns odd or even
- -- since it only does one thing (no loops) this is Constant Time 0(1)
- ----------------------------
- Are you Here?
- ----------------------------
- function areYouHere(arr1, arr2) {
- for (let i=0; i<arr1.length; i++) {
- const el1 = arr1[i];
- for (let j=0; j<arr2.length; j++) {
- const el2 = arr2[j];
- if (el1 === el2) return true;
- }
- }
- return false;
- }
- -- one loop and then a nested loop so looks like polynomial time
- -- Best case would be constant Time 0 (1) since it could only go through 1 loop (?)
- ----------------------------
- Doubler
- ----------------------------
- function doubleArrayValues(array) {
- for (let i=0; i<array.length; i++) {
- array[i] *= 2;
- }
- return array;
- }
- -- 1 loop = linear time (depends on array length)
- ----------------------------
- Naive Search
- ----------------------------
- function naiveSearch(array, item) {
- for (let i=0; i<array.length; i++) {
- if (array[i] === item) {
- return i;
- }
- }
- }
- - 1 loop = linear time(depends on array length)
- ----------------------------
- Creating pairs
- ----------------------------
- function createPairs(arr) {
- for (let i = 0; i < arr.length; i++) {
- for(let j = i+1; j < arr.length; j++) {
- console.log(arr[i] + ", " + arr[j] );
- }
- }
- }
- -- nested loop so polynomial time (n^2)
- ----------------------------
- Computing fibonaccis
- ----------------------------
- function generateFib(num) {
- let result = [];
- for (let i = 1; i <= num; i++) {
- // we're adding the first item
- // to the result list, append the
- // number 0 to results
- if (i === 1) {
- result.push(0);
- }
- // ...and if it's the second item
- // append 1
- else if (i == 2) {
- result.push(1);
- }
- // otherwise, sum the two previous result items, and append that value to results.
- else {
- result.push(result[i - 2] + result[i - 3]);
- }
- }
- // once the for loop finishes
- // we return `result`.
- return result;
- }
- -- Best case = constant Time 0(1) since (if num = 1)
- - worst case = linear time
- ----------------------------
- An Efficient Search
- ----------------------------
- function efficientSearch(array, item) {
- let minIndex = 0;
- let maxIndex = array.length - 1;
- let currentIndex;
- let currentElement;
- while (minIndex <= maxIndex) {
- currentIndex = Math.floor((minIndex + maxIndex) / 2);
- currentElement = array[currentIndex];
- if (currentElement < item) {
- minIndex = currentIndex + 1;
- }
- else if (currentElement > item) {
- maxIndex = currentIndex - 1;
- }
- else {
- return currentIndex;
- }
- }
- return -1;
- }
- -logarithimic time 0(log n) -- the looping halves each iteration
- ----------------------------
- Random Element
- ----------------------------
- function findRandomElement(arr) {
- return arr[Math.floor(Math.random() * arr.length)];
- }
- - constant run time complexity 0 (1) (only one action)
- ----------------------------
- Is it Prime?
- ----------------------------
- function isPrime(n) {
- // if n is less than 2 or a decimal, it's not prime
- if (n < 2 || n % 1 != 0) {
- return false;
- }
- // otherwise, check if `n` is divisible by any integer
- // between 2 and n.
- for (let i = 2; i < n; ++i) {
- if (n % i == 0) return false;
- }
- return true;
- }
- - Best case it hits the first statement = constant time 0(1)
- - Worse Case is linear run time complexity 0(n) -- depends on what n is
Add Comment
Please, Sign In to add comment