33
44namespace algorithms_cs . Algorithm . Sort . External . Merge ;
55
6-
76public class MultiwaySort : Sort
87{
98 private readonly string _sourceFilePath ;
@@ -13,14 +12,15 @@ public class MultiwaySort: Sort
1312 private List < Tape . Tape > _tapes ;
1413 private readonly string _templateNameFiles ;
1514
16-
1715 public MultiwaySort ( int N , string sourceFilePath )
1816 {
1917 if ( N <= 1 ) throw new InvalidDataException ( "" ) ;
2018
2119 _sourceFilePath = sourceFilePath ;
20+
2221 var directoryName = Path . GetDirectoryName ( _sourceFilePath ) ;
2322 if ( directoryName == null ) throw new DirectoryNotFoundException ( ) ;
23+
2424 _tempDirectory = directoryName + "\\ temp\\ " ;
2525 _templateNameFiles = _tempDirectory + "tempfile-{0}.multiwaymergesort" ;
2626 Directory . CreateDirectory ( _tempDirectory ) ;
@@ -30,11 +30,11 @@ public MultiwaySort(int N, string sourceFilePath)
3030
3131 var firstFilenames = new List < string > ( ) ;
3232 var secondFilenames = new List < string > ( ) ;
33- for ( int i = 0 ; i < _n ; i ++ )
33+ for ( var i = 0 ; i < _n ; i ++ )
3434 {
3535 firstFilenames . Add ( string . Format ( _templateNameFiles , i . ToString ( ) ) ) ;
3636 }
37- for ( int i = _n ; i < _n * 2 ; i ++ )
37+ for ( var i = _n ; i < _n * 2 ; i ++ )
3838 {
3939 secondFilenames . Add ( string . Format ( _templateNameFiles , i . ToString ( ) ) ) ;
4040 }
@@ -73,12 +73,8 @@ private void InitTapeSplit()
7373 {
7474 var initTape = new BufferedTapeReader ( _sourceFilePath ) ;
7575
76- var tapeWrites = new List < TapeWriter < double > > ( ) ;
77- foreach ( var filename in _dominoes . WriteFilenames )
78- {
79- tapeWrites . Add ( new TapeWriter < double > ( filename ) ) ;
80- }
81-
76+ var tapeWrites = _dominoes . WriteFilenames . Select ( filename => new TapeWriter < double > ( filename ) ) . ToList ( ) ;
77+
8278 var indexTape = 0 ;
8379 if ( indexTape >= _n ) throw new IndexOutOfRangeException ( "indexTape out of range tapeWrites" ) ;
8480
@@ -128,7 +124,6 @@ private int MainRound()
128124 var writeTapes = new List < TapeWriter < double > > ( ) ;
129125 if ( writeTapes == null ) throw new ArgumentNullException ( nameof ( readTapes ) ) ;
130126 writeTapes . AddRange ( _dominoes . WriteFilenames . Select ( filename => new TapeWriter < double > ( filename ) ) ) ;
131-
132127
133128 var indexTape = 0 ;
134129 if ( indexTape >= _n ) throw new IndexOutOfRangeException ( "indexTape out of range tapeWrites" ) ;
0 commit comments