Skip to main content

classic merge short in typescript

working example

https://stackblitz.com/edit/typescript-lchwhz

Please remember this is not the best way to implement merge short in javascript but its a classic way using without any inbuilt API method.

more detail about merge sort is=>
https://www.youtube.com/watch?v=TzeBrDU-JaY

//merge sort in typescript using classic way you can easliy reduce this method to sorter one depends on your requirement
class sortAlgo
{
static sort(myArray:Array<number>)
{
//left bound
let left=0;
//right bound just one less than total array length
let right=myArray.length-1;
//divide array in to small part
this.divideArray(myArray,left,right);
}
static divideArray(myArray:Array<number>,left:number,right:number)
{
//recursive call util left < right
if(left<right)
{
//find mid to preventing stack overflow right-1
let mid=Math.round(left+right-1/2);
//divide left part
this.divideArray(myArray,left,mid-1);
//divide right part
this.divideArray(myArray,mid+1,right);
//merge both part
this.mergeArray(myArray,left,right,mid);
}
}
static mergeArray(myArray:Array<number>,left:number,right:number,mid:number)
{
//create two array
let leftArray=[];
let rightArray=[];
//fill left and right array
this.fillArray(left,mid,leftArray,myArray);

this.fillArray(mid,right+1,rightArray,myArray);
//swap/exchange values between left and right array in shorted manner
let i=0,j=0,k=0;
while(i<leftArray.length && j<rightArray.length)
{
if(leftArray[i]<rightArray[j])
{
myArray[k]=leftArray[i];
i++;
}
else
{
myArray[k]=rightArray[j];
j++;
}
k++;
}
while(i<leftArray.length)
{
myArray[k]=leftArray[i];
i++;
k++;
}
while(j<rightArray.length)
{
myArray[k]=rightArray[j];
j++;
k++;
}

}
static fillArray(from:number,to:number,toArray:Array<number>,fromArray:Array<number>)
{
for(let i=from;i<to;i++)
{
toArray.push(fromArray[i]);
}
}


}

var myArray=[];
for(let i=0;i<20;i++)
{
myArray.push(5+Math.round(Math.random()*25));
}
console.log(myArray);
sortAlgo.sort(myArray);
console.log(myArray);

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...