public static List <Folder> firstFitDecreasingLS(List <AudioFile> input, int maxcap) { List <Folder> myFolders = new List <Folder>(); AudioFile[] inputArray = input.ToArray(); MinHeap.HeapSort(inputArray); //O(Nlog(N)) for (int i = 0; i < inputArray.Length; i++) { Folder remain_folder = null; for (int j = 0; j < myFolders.Count; j++) { if (myFolders[j].remaincap >= (int)inputArray[i].Duration.TotalSeconds) { remain_folder = myFolders[j]; break; } } if ((remain_folder != null)) { remain_folder.addFile(inputArray[i]); } else { Folder folder = new Folder(maxcap); folder.addFile(inputArray[i]); myFolders.Add(folder); } } return(myFolders); }
public static LinkedList <Folder> firstFitDecreasingLS(List <AudioFile> input, int maxcap) { LinkedList <Folder> myFolders = new LinkedList <Folder>(); AudioFile[] inputArray = input.ToArray(); MinHeap.HeapSort(inputArray); //O(Nlog(N)) for (int i = 0; i < inputArray.Length; i++) //O(N) { Folder remain_folder = null; LinkedListNode <Folder> current = myFolders.First; for (int j = 0; j < myFolders.Count; j++)//O(M) { if (current.Value.remaincap >= (int)inputArray[i].Duration.TotalSeconds) { remain_folder = current.Value; break; } current = current.Next; } if ((remain_folder != null)) { remain_folder.addFile(inputArray[i]); } else { Folder folder = new Folder(maxcap); folder.addFile(inputArray[i]); myFolders.AddLast(folder); } } return(myFolders); }
public static LinkedList <Folder> folderFilling2(List <AudioFile> input, int maxcap) { AudioFile[] inputArray = input.ToArray(); MinHeap.HeapSort(inputArray); //O(Nlog(N)) LinkedList <AudioFile> inputLL = new LinkedList <AudioFile>(inputArray); return(folderFilling(inputLL, maxcap)); }
public static List <Folder> worstFitDecreasingLS(List <AudioFile> input, int maxcap) { // sort the input using the built-in list sorting method //input.Sort((x, y) => -1 * x.Duration.CompareTo(y.Duration)); // convert the input list to an array AudioFile[] inputArray = input.ToArray(); MinHeap.HeapSort(inputArray); //O(Nlog(N)) List <Folder> myFolders = new List <Folder>(); Folder firstFolder = new Folder(maxcap); myFolders.Add(firstFolder); for (int i = 0; i < inputArray.Length; i++) { int max_remain_cap = 0; Folder max_remain_folder = null; for (int j = 0; j < myFolders.Count; j++) { if (myFolders[j].remaincap > max_remain_cap) { max_remain_cap = myFolders[j].remaincap; max_remain_folder = myFolders[j]; } } if ((max_remain_folder != null) && (max_remain_folder.remaincap >= (int)inputArray[i].Duration.TotalSeconds)) { max_remain_folder.addFile(inputArray[i]); } else { Folder folder = new Folder(maxcap); folder.addFile(inputArray[i]); myFolders.Add(folder); } } return(myFolders); }
public static List <Folder> bestFitDecreasingLS(List <AudioFile> input, int maxcap) { AudioFile[] inputArray = input.ToArray(); MinHeap.HeapSort(inputArray); //O(Nlog(N)) return(bestFitLS(inputArray.ToList <AudioFile>(), maxcap)); }