2017-01-06 3 views
0

Halo am пытается пузырить сортировать двухмерный массив, помочь мне отлаживать. Может сортироваться без массива успешно, но мне нужно сортировать, используя 2d-массив, который не работает.Bubble sort 2d array js

Мне нужно каждое содержимое каждой строки независимо. И упаковывают вы можете сделать это с помощью какого-либо другого алгоритма сортировки также будет помощь

Благодаря

//make a two dimensional array 
function make2Darray(cols, rows){ 
var arr = new Array(cols); 
for(var i = 0; i<arr.length; i++){ 
    arr[i] = new Array(rows); 
} 
return arr; 
} 
var unsortedData = new Array([40516, 51028, 64212, 66516, 82597], 
[35606, 85929, 89405, 79392, 38572]); 
//Generate array 
var row =2, column =5, d=0; 
var unsorted= make2Darray(column,row); 

for(var r=0; r<row; ++r){ 
for(var c =0; c<column; ++c){ 

    unsorted[r][c] = unsortedData[d++]; 
} 
} 

function bubbleSort(arrayData) 
{ 
    document.write("<h3 class='text text-info'> Bubble Sort</h3>"); 
    document.write("At the end of each iteration highest element is already sorted. <br />"); 

    //Loop through to sort 

    for (var count1 =0; count1<5; count1++)// outer loop loops (number of elements- 1) times 
    { 
    for (var counter = 0; counter < 5; counter++) 
    { 

    //Compare elements and swap incase 
    if(arrayData[count1][counter] > arrayData[count1][counter+1]) 
    { 
     //swap positions 
     var temp = arrayData[count1][counter]; 
     arrayData[count1][counter] = arrayData[count1][counter+1]; 
     arrayData[count1][counter+1] = temp; 


    } 

    } 

    } 
    return arrayData; 
} 

//pass data to sort to bubble sort function 
//Determine execution time 
    var bs_start_time = performance.now(); 
    var bs_array = bubbleSort(unsorted); 
    var c = bs_array.length; 

//display sorted data 
for(var i=0; i<row; i++){ 
    for(var j = 0; j<column; j++){ 
    document.write(bs_array[i][j] + ", "); 

    } 
    document.write("<br/>"); 
} 
+0

Вы должны исправить свой identation и придерживаться последовательного форматирования –

ответ

0

Я предполагаю, что внешний контур должен итерацию к (кол-1) = 4 и суслу внутреннего цикла итерацию от count1 + 1, Вы не должны менять местами элементы уже отсортированы

for (var count1 =0; count1<4; count1++) 
    { 
    for (var counter = count1+1; counter < 5; counter++) 
    { 

    //Compare elements and swap incase 
    if(arrayData[count1][counter] > arrayData[count1][counter+1]) 
    { 
     //swap positions 
     var temp = arrayData[count1][counter]; 
     arrayData[count1][counter] = arrayData[count1][counter+1]; 
     arrayData[count1][counter+1] = temp; 


    } 

    } 
+0

Спасибо за помощь ... ты понял, добавил третий цикл, и он работал – Michael

0
//figured it out by adding a third loop 
function bubbleSort(arrayData, r, c) 
{ 
    document.write("<h3 class='text text-info'> Bubble Sort</h3>"); 
    document.write("At the end of each iteration highest element is already sorted. <br />"); 


    //Loop through to sort 
    for (var count =0; count<r; count++) // outer loop loops (number of elements- 1) times 
    { 
    for(var count2=c-1; count2>=0; count2--){ 
    for (var counter = 0; counter <=count2; counter++) 
    { 

    //Compare elements and swap incase 
    if(arrayData[count][counter] > arrayData[count][counter+1]) 
    { 
     //swap positions 
     var temp = arrayData[count][counter]; 
     arrayData[count][counter] = arrayData[count][counter+1]; 
     arrayData[count][counter+1] = temp; 


    } 

    } 
    } 

    } 
    return arrayData; 
} 

//pass data to sort to bubble sort function 
    var bs_array = bubbleSort(unsorted, row, column);