Try this solution: 

      $collection->getSelect()->joinLeft(
             ['_inventory_table' => 'cataloginventory_stock_item'], 
             "_inventory_table.product_id = e.entity_id", ['is_in_stock']
      );
      $collection->getSelect()->order(['is_in_stock desc']);