*Bubble sort
-ceate a function that returns a sorted array in ascending order
-within the function, create an array with a size of 10 with random unique numbers (1-100) in it (to generate random numbers try using Math.random() function)
-sort the random values then return the array
*displaying the array
-in respect to problem 1, display the returned array into an ordered list element (<ol>)
Here is my solution to the problem.
Code snippets to help with output tracing is also available as comments.
var num = [];
num = assignValToArray();
bubbleSort(num);
displayOrderedList(num);
// ***** FUNCTIONS *****
//assign n random unique numbers to array;
function assignValToArray(){
var arr = [];
var val;
var maxNum = 100;
var minNum = 1;
var n = 10; //size;
while(arr.length < n){
val = Math.floor(Math.random() * ((maxNum + 1) - minNum) + minNum);
//check generated value if exists in the array;
var exist = false;
for(var x = 0; x < arr.length; x++){
if(val === arr[x]){
exist = true;
break;
}
}
//push to array if generated value does not exist;
if(!exist){
arr.push(val);
}
}
//document.write("Original list: " + arr); //original list;
return arr;
}
// bubble sort;
function bubbleSort(arr){
//var count = 0; //count for every iteration;
do{
var tmp; //hold temporary value;
var swap = false;
for(var i = 0; i < arr.length-1; i++){
if(arr[i] > arr[i+1]){
swap = true;
tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
}
//count++;
//document.write("<br>" + count + "th Iteration: " + num); //list every iteration;
}while(swap);
}
//display output;
function displayOrderedList(arr){
document.write("<ol>");
for(var i = 0; i < arr.length; i++){
document.write("<li>" + arr[i] + "</li>");
}
document.write("</ol>");
}
For questions or for better solutions, feel free to leave a message on the comments section.
Great article! :)
ReplyDelete