Example #1
0
        static void Main(string[] args)
        {
            BinarySearchTree <int, String> tree = new BinarySearchTree <int, string>();

            int[] arr    = new int[] { 1, 7, 3, 6, 1, 9, 0, 7, 5, 4 };
            var   result = SortFunctions <int> .Sort(arr, SortingTechniques.MERGE_SORT);
        }
Example #2
0
        private void UpdateItems()
        {
            var items = new List <FileViewModel>();
            var files = new List <string>(_bundle.GetFiles(GetSelectedFolderPath()));

            Progress.Label = "Reading";
            Progress.Reset(files.Count);
            Progress.IsEnabled = true;

            var s = Stopwatch.StartNew();

            foreach (var vm in _bundle.GetFileViewModels(GetSelectedFolderPath()))
            {
                var delegateVm = vm;
                vm.OpenItemCommand = new DelegateCommand(() => OpenItem(delegateVm));
                items.Add(vm);
                Progress.Current++;
            }

            s.Stop();
            Debug.WriteLine(s.ElapsedMilliseconds + "ms to scan " + items.Count + " files");

            items.Sort((l, r) => SortFunctions.NumericStringCaseInsensitiveCompare(l.Name, r.Name));

            _backgroundWorkerService.InvokeOnUiThread(() =>
            {
                Progress.IsEnabled = false;
                Items = items;
                OnPropertyChanged(() => Items);
            });
        }
Example #3
0
        public void TestNumericStringCaseInsensitiveCompare(string left, string right, int expected)
        {
            int result = SortFunctions.NumericStringCaseInsensitiveCompare(left, right);

            if (expected == 0)
            {
                Assert.That(result, Is.EqualTo(0), "expected equal strings");
            }
            else if (expected < 0)
            {
                Assert.That(result, Is.LessThan(0), "expected left first");
            }
            else
            {
                Assert.That(result, Is.GreaterThan(0), "expected right first");
            }
        }
        private void btn_run_Click(object sender, EventArgs e)
        {
            //Check to see if all of the values set are ok
            Boolean OK = true;

            //Passenger File
            if (txt_pdf.Text.Equals(""))
            {
                MessageBox.Show("Passenger File Required");
                OK = false;
            }
            else
            {
                //Check it exists
                if (!File.Exists(txt_pdf.Text))
                {
                    MessageBox.Show("Passenger File Does not Exist");
                    OK = false;
                }
            }

            //Airport File
            if (txt_apt.Text.Equals(""))
            {
                MessageBox.Show("Airport File Required");
                OK = false;
            }
            else
            {
                //Check it exists
                if (!File.Exists(txt_pdf.Text))
                {
                    MessageBox.Show("Airport File Does not Exist");
                    OK = false;
                }
            }

            //Output Directory
            if (txt_output.Text.Equals(""))
            {
                MessageBox.Show("Ouput Directiry Required");
                OK = false;
            }
            else
            {
                // check the directory existis
                if (!Directory.Exists(txt_output.Text))
                {
                    MessageBox.Show("Output Directory Does not Exist");
                }
            }
            //Check to see if it's all ok and then run
            if (OK)
            {
                //Clear the log
                txt_log.Text = "";
                txt_log.Text = "Starting New MapReduce";
                //create a new Mapper Object
                Mapper mapper = new Mapper();
                //Set the files to be used
                mapper.AirportFile   = txt_apt.Text;
                mapper.PassengerFile = txt_pdf.Text;
                mapper.outputPath    = txt_output.Text;
                mapper.log           = txt_log;
                //Map the Airports synchronously as we need to validate the airports for the passenger files

                //Start with Mapping the Airports file.
                mapper.MapAirports();

                //Map the passenger File
                mapper.MapPassengers();

                //Now start Sorting
                SortFunctions SF = new SortFunctions();
                SF.outputpath = mapper.outputPath;
                //Now add a dictionary of the mappers so that it can run on multiple threads.
                Dictionary <string, string[]> MapOutput = new Dictionary <string, string[]>();
                //Add the inputfiles required

                //A list of all flights from airport and the list of airport codes
                string[] FlightAirportFiles = { mapper.AptLatFile, mapper.FromAirportFile };
                MapOutput.Add("FlightsAirport", FlightAirportFiles);

                //Passengers for each flight Sorter
                string[] PassengerFlightFiles = { mapper.FlightPassengerFile };
                MapOutput.Add("FlightPassengers", PassengerFlightFiles);

                //Distance For each Flight
                string[] DistanceFlightFiles = { mapper.AptLatFile, mapper.AptLonFile, mapper.FlightDepArptFile, mapper.FlightDestFile, mapper.FlightPassengerFile };
                MapOutput.Add("FlightDistance", DistanceFlightFiles);

                //All flight Information
                string[] AllFlightInfo = { mapper.FlightPassengerFile, mapper.FlightDepArptFile, mapper.FlightDestFile, mapper.FlightDepTimeFile, mapper.FlightTimeFile };
                MapOutput.Add("AllFlightInfo", AllFlightInfo);

                //Now do the garbage collection from the mappers
                mapper = null;
                GC.Collect();

                //Now set the multithreading options
                //We will just have one Sorter per thread and set the maximum number of thread to processor /2 to avoid memory issues
                //Each sorter will then go to the relevant reducers
                var Paralleloptions = new ParallelOptions {
                    MaxDegreeOfParallelism = Environment.ProcessorCount / 2
                };
                Parallel.ForEach(MapOutput, Paralleloptions, MapperOut =>
                {
                    //Now run the required Sorter
                    SF.Sort(MapperOut.Key, MapperOut.Value);
                    //Garbage collect each thread to free up any memory still left
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                });

                //Update the Log window
                txt_log.AppendText(SF.LogWindow);

                //All done, now show the output folder in explorer
            }
            else
            {
            }
        }