Skip to content

Instantly share code, notes, and snippets.

@andrievsky
Last active January 15, 2016 08:12
Show Gist options
  • Save andrievsky/86c85859d66d75f9ba6c to your computer and use it in GitHub Desktop.
Save andrievsky/86c85859d66d75f9ba6c to your computer and use it in GitHub Desktop.
Extra task. Sort arrays
/***
Extra task. Write method that takes two sorted arrays of integers (can be of any range, numbers can
repeat, sizes of arrays can be different) and returns array of n + m length which is sorted in the same
order. Do not use any type of built-in sorting.
*/
function sort(array1:Array, array2:Array):Array{
if(array1.length === 0) return array2;
if(array2.length === 0) return array1;
var compare:Function = (array1[0] < array1[array1.length - 1] || array2[0] < array2[array1.length - 1] ) ? isSmaller : isBigger;
var newLenght:int = array1.length + array2.length;
var result:Array = [];
var index1:int = 0;
var index2:int = 0;
for(var i:int = 0; i < newLenght; i++){
if(compare(array1[index1], array2[index2])){
result[i] = array1[index1];
index1++;
if(index1 === array1.length) return result.concat(array2.slice(index2));
} else {
result[i] = array2[index2];
index2++;
if(index2 === array2.length) return result.concat(array1.slice(index1));
}
}
trace(result);
return result;
}
function isSmaller(item1:int, item2:int):Boolean{
return item1 < item2;
}
function isBigger(item1:int, item2:int):Boolean{
return item1 > item2;
}
trace('test1: '+test1());
trace('test2: '+test2());
trace('test3: '+test3());
trace('test3: '+test4());
function test1():Boolean{
var array1:Array = [1,2,4];
var array2:Array = [1,3,5];
return('1,1,2,3,4,5' === sort(array1, array2).toString())
}
function test2():Boolean{
var array1:Array = [];
var array2:Array = [1,3,5];
return('1,3,5' === sort(array1, array2).toString())
}
function test3():Boolean{
var array1:Array = [7,6,5];
var array2:Array = [10,9,8];
return('10,9,8,7,6,5' === sort(array1, array2).toString())
}
function test4():Boolean{
var array1:Array = [1,1,1];
var array2:Array = [3,2,2];
return('3,2,2,1,1,1' === sort(array1, array2).toString())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment