示例#1
0
        //Button: Worst-fit decreasing algorithm using Linear Search.
        //Overall Complexity: First for loop(𝞱(N))+Max(Merge Sort(O(N log N)),Second for loop(𝞱(N*M))+Create(𝞱(1))+MetaData(𝞱(N+M))+Copy(𝞱(N+M))) =.O(Max(N log N,N*M)).
        private void button4_Click(object sender, EventArgs e)
        {
            Stopwatch StpW = Stopwatch.StartNew();

            Names_Durations list = new Names_Durations();

            for (int i = 0; i < durations.Count; i++)//First for loop:𝞱(N)
            {
                list.name.Add(names[i]);
                list.duration.Add(durations[i]);
            }
            Names_Durations NewList = MergeSort(list);//O(N log N)

            List <folder> folders    = new List <folder>();
            folder        tempfolder = new folder();

            tempfolder.folder_name         = "F1";
            tempfolder.totalremainduration = duration_each_folder - NewList.duration[0];
            tempfolder.number_files        = 1;
            tempfolder.files_names.Add(NewList.name[0]);
            tempfolder.files_Durations.Add(NewList.duration[0]);
            folders.Add(tempfolder);
            for (int i = 1; i < NewList.duration.Count; i++)                              //Overall Complexity of the Second for loop:𝞱(N*M),Number of the iteration=N
            {
                int max_folder_index = maxfolder(folders);                                //𝞱(M)
                if (NewList.duration[i] <= folders[max_folder_index].totalremainduration) //𝞱(1)
                {
                    folders[max_folder_index].totalremainduration -= NewList.duration[i];
                    folders[max_folder_index].files_names.Add(NewList.name[i]);
                    folders[max_folder_index].files_Durations.Add(NewList.duration[i]);
                    folders[max_folder_index].number_files++;
                }
                else//𝞱(1)
                {
                    folder tempfolder2 = new folder();
                    tempfolder2.folder_name         = "F" + (folders.Count + 1).ToString();
                    tempfolder2.totalremainduration = duration_each_folder - NewList.duration[i];
                    tempfolder2.files_names.Add(NewList.name[i]);
                    tempfolder2.files_Durations.Add(NewList.duration[i]);
                    tempfolder2.number_files = 1;
                    folders.Add(tempfolder2);
                }
            }

            string FolderName = "[2] WorstFit Decreasing";

            Create(FolderName); //𝞱(1)

            METADATA(folders);  //𝞱(N+M)

            StpW.Stop();
            MessageBox.Show(StpW.Elapsed.ToString());

            Copy(folders);//𝞱(N+M)

            MessageBox.Show("Done !");
        }
示例#2
0
        //folder filling algorithm

        /*
         * -complexity of exactlySum 𝞱(N*D)
         * -exactlySum is called inside while loop when there is more audios
         * -overall of folder filling of while loop inside folder filling button
         * -complexity 𝞱(D*N^2)
         * -Where D is duration of each folder and N is number of audio files
         */
        private void button10_Click(object sender, EventArgs e)
        {
            Stopwatch StpW = Stopwatch.StartNew();

            Names_Durations obj = new Names_Durations();

            for (int i = 0; i < durations.Count; i++)//𝞱(N)
            {
                obj.name.Add(names[i]);
                obj.duration.Add(durations[i]);
            }

            List <folder> folders = new List <folder>();

            while (true) //O(N^2*D)
            {
                if (obj.duration.Count == 0)
                {
                    break;                                                                                   //𝞱(1)
                }
                Names_Durations answer = exactlySum(ref obj, obj.duration.Count, (int)duration_each_folder); //𝞱(N*D)
                if (answer.duration.Count == 0)
                {
                    break;                            //𝞱(1)
                }
                folder tempfolder2 = new folder();
                tempfolder2.folder_name         = "F" + (folders.Count + 1).ToString();
                tempfolder2.totalremainduration = 0;
                tempfolder2.totalremainduration = duration_each_folder;
                for (int i = 0; i < answer.duration.Count; i++)//O(N)
                {
                    tempfolder2.files_names.Add(answer.name[i]);
                    tempfolder2.files_Durations.Add(answer.duration[i]);
                    tempfolder2.totalremainduration -= answer.duration[i];
                }
                folders.Add(tempfolder2);
            }

            string FolderName = "[4] FolderFilling";

            Create(FolderName);

            METADATA(folders);//𝞱(N+M)

            StpW.Stop();
            MessageBox.Show(StpW.Elapsed.ToString());

            Copy(folders); //𝞱(N+M)

            MessageBox.Show("Done !");
        }
示例#3
0
        //Button: Worst-fit algorithm using Linear Search.
        //Overall complexity: for loop(𝞱(N*M))+Create(𝞱(1))+MetaData(𝞱(N+M))+Copy(𝞱(N+M)) = O(N*M).
        private void button2_Click(object sender, EventArgs e)
        {
            Stopwatch StpW = Stopwatch.StartNew();

            List <folder> folders    = new List <folder>();
            folder        tempfolder = new folder();

            tempfolder.folder_name         = "F1";
            tempfolder.totalremainduration = duration_each_folder - durations[0];
            tempfolder.number_files        = 1;
            tempfolder.files_names.Add(names[0]);
            tempfolder.files_Durations.Add(durations[0]);
            folders.Add(tempfolder);
            for (int i = 1; i < durations.Count; i++)                              //Overall Complexity:𝞱(N*M),Number of the iteration=N
            {
                int max_folder_index = maxfolder(folders);                         //𝞱(M)
                if (durations[i] <= folders[max_folder_index].totalremainduration) //𝞱(1)
                {
                    folders[max_folder_index].totalremainduration -= durations[i];
                    folders[max_folder_index].files_names.Add(names[i]);
                    folders[max_folder_index].files_Durations.Add(durations[i]);
                    folders[max_folder_index].number_files++;
                }
                else//𝞱(1)
                {
                    folder tempfolder2 = new folder();
                    tempfolder2.folder_name         = "F" + (folders.Count + 1).ToString();
                    tempfolder2.totalremainduration = duration_each_folder - durations[i];
                    tempfolder2.files_names.Add(names[i]);
                    tempfolder2.files_Durations.Add(durations[i]);
                    tempfolder2.number_files = 1;
                    folders.Add(tempfolder2);
                }
            }

            string FolderName = "[1] WorstFit";

            Create(FolderName); //𝞱(1)

            METADATA(folders);  //𝞱(N+M)

            StpW.Stop();
            MessageBox.Show(StpW.Elapsed.ToString());

            Copy(folders);//𝞱(N+M)

            MessageBox.Show("Done !");
        }
示例#4
0
        //---------------------------------------------------------------------------------------------------------------------------------------
        //5.First-fit decreasing algorithm using Linear Search. ---------------------------------------------------------------------------------
        //Button: First-fit decreasing algorithm using Linear Search.

        /*Overall Complexity: First for loop(𝞱 (N))+ 𝞱 (Max(Merge(O(N log N)),Second for loop(𝞱(N*M))))+Create(𝞱(1))+METADATA(𝞱(N+M))+Copy(𝞱(N+M)) =
         *                   =𝞱 (Max(Merge(𝞱(N log N)),Second for loop(𝞱(N*M)))) = O(Max(N log N,N*M)).*/
        private void button9_Click(object sender, EventArgs e)
        {
            Stopwatch StpW = Stopwatch.StartNew();

            Names_Durations list = new Names_Durations();

            for (int i = 0; i < durations.Count; i++)//First for loop:𝞱 (N)
            {
                list.name.Add(names[i]);
                list.duration.Add(durations[i]);
            }
            Names_Durations NewList = MergeSort(list);//O(N log N)

            List <folder> folders = new List <folder>();
            folder        folder1 = new folder();

            folder1.folder_name         = "F1";
            folder1.totalremainduration = duration_each_folder - NewList.duration[0];
            folder1.number_files        = 1;
            folder1.files_names.Add(NewList.name[0]);
            folder1.files_Durations.Add(NewList.duration[0]);
            folders.Add(folder1);
            for (int i = 1; i < NewList.duration.Count; i++)//Secong for loop:𝞱(N*M),Number of iteration= N
            {
                bool flag = false;

                for (int j = 0; j < folders.Count; j++)                        //𝞱(M),Number of iteration M
                {
                    if (NewList.duration[i] <= folders[j].totalremainduration) //𝞱(1)
                    {
                        folders[j].totalremainduration -= NewList.duration[i];
                        folders[j].files_names.Add(NewList.name[i]);
                        folders[j].files_Durations.Add(NewList.duration[i]);
                        folders[j].number_files++;
                        flag = true;
                        break;
                    }
                }

                if (flag == false)//𝞱(1)
                {
                    folder New_folder = new folder();
                    New_folder.folder_name         = "F" + (folders.Count + 1).ToString();
                    New_folder.totalremainduration = duration_each_folder - NewList.duration[i];
                    New_folder.files_names.Add(NewList.name[i]);
                    New_folder.files_Durations.Add(NewList.duration[i]);
                    New_folder.number_files = 1;
                    folders.Add(New_folder);
                    flag = true;
                }
            }

            string FolderName = "[3] FirstFit Decreasing";

            Create(FolderName); //𝞱(1)

            METADATA(folders);  //𝞱(N+M)

            StpW.Stop();
            MessageBox.Show(StpW.Elapsed.ToString());

            Copy(folders);//𝞱(N+M)

            MessageBox.Show("Done !");
        }