尝试创建一个函数,使用冒泡排序对2D数组的行进行排序,然后打印它

时间:2016-07-08 15:30:53

标签: c arrays

我正在尝试使用冒泡排序对2D数组进行排序,然后打印新排序的数组。这就是我到目前为止所做的:

var arr = ["hello", "hi", "hello", "elephant", "hi"];


function onlyEvens( arr )
{
  var countObj = {};
  for( var i = 0; i < arr.length; i++ )
  {
    var item = arr[i];
    
    if( countObj[ item ] !== undefined )
      countObj[item]++;
    else
      countObj[item] = 1;
  }//for()
  
  var filteredArray = [];
  
  for(var key in countObj )
  {
    if( countObj[key] % 2 == 0 )
      filteredArray.push( key );
  }
  
  return filteredArray;
}//onlyEvens()

console.log( onlyEvens( arr ) );

这是当尺寸== 4

时打印的内容 排序前

void sort_2Darray(int x[][MAX],int size)
{
  int i;
  int j;
  int hold;
  int pass;

  for(pass=1;pass<size;pass++)
  {
    for(i=0;i<size;i++)
    {
      for(j=0;j<size;j++)
      {
        if(x[i][j]>x[i][j+1])
        {
          hold=x[i][j];
          x[i][j]=x[i][j+1];
          x[i]j+1]=hold;
        }
      }
    }
    for(i=0;i<size;i++)
    {
      for(j=0;j<size;j++)
      { 
        printf("%2d", x[i][j]);
      }
      printf("\n");
    }
  }
}

打印4次后:

0 3 6 6
2 9 7 0
4 1 1 1 
7 0 2 6

1 个答案:

答案 0 :(得分:1)

for(pass=0;pass<size;pass++)
{
  for(i=0;i<(size-1);i++)
  {
    for(j=0;j<(size-i-1);j++)
    {
      if(x[pass][j]>x[pass][j+1])
      {
        hold=x[pass][j];
        x[pass][j]=x[pass][j+1];
        x[pass][j+1]=hold;
      }
    }
  }

我没有测试过这段代码,但我认为这应该可以正常工作并完成工作。

如果不起作用,请报告。