Row key orders are preserved only in one StoreFile and not between StoreFiles.
When we Get, no binary search is required because :
1) HFiles have b-tree-like indexes
2) A heap (PriorityQueue) of StoreFile readers is created when reading from multiple StoreFiles. StoreFile readers in the heap is compared according to its current KeyValue. We always read from the reader whose current KeyValue is "smallest" in order. (Though, optimizations like lazy-seek make things a bit more complicated.)
See org.apache.hadoop.hbase.regionserver.KeyValueHeap for more.
As for region-splitting, a "Reference" to old regions' top/bottom half will be used. And later, compactions will generate new actual HFiles for new regions.
See org.apache.hadoop.hbase.io.HalfStoreFileReader for more.