the missing semester
时间: 2023-04-11 14:04:58 浏览: 101
The Missing Semester 是一门由MIT开设的计算机科学课程,旨在填补计算机科学教育中的一些空缺,如Unix工具、版本控制、调试、性能优化等。这门课程的目标是让学生掌握实用的技能,以便更好地应对现实世界中的计算机科学问题。
相关问题
Develop a NetBeans application that illustrates the applicability of one sorting algorithm on a collection of 10 items. The algorithm should sort the items in descending order. The algorithm must work based on the principle of one of the four sorting algorithms studied during the semester. The collection of 10 items is defined and populated in the application code. You can decide the type and values of items stored in the collection. The algorithm must be implemented as part of a class called MyArrayList that extends the ArrayList class functionality with your sorting algorithm. [20 marks] 5. Extend the application implemented for Question 4 above to be able to measure the efficiency of the implemented sorting algorithm in term of number of comparisons performed by the algorithm. The application should display the total number of comparisons performed by the algorithm for a given collection of items. [10 marks] 6. In an Excel graph, plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered. Submit your Excel file on Moodle. [20 marks]
Sure, I understand your question. You want me to develop a NetBeans application that demonstrates the use of one sorting algorithm on a collection of 10 items, sorting them in descending order. The algorithm should be based on one of the four sorting algorithms studied during the semester and should be implemented as part of a class called MyArrayList that extends the ArrayList class functionality with your sorting algorithm. Additionally, you want me to extend the application to measure the efficiency of the implemented sorting algorithm in terms of the number of comparisons performed by the algorithm, and to plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered in an Excel graph.
To start, let's define and populate the collection of 10 items in the NetBeans application code. We can use integers for the items stored in the collection. Here's an example of how the collection can be defined and populated:
```
import java.util.ArrayList;
public class SortingDemo {
public static void main(String[] args) {
MyArrayList<Integer> list = new MyArrayList<Integer>();
list.add(5);
list.add(2);
list.add(10);
list.add(8);
list.add(1);
list.add(7);
list.add(9);
list.add(3);
list.add(4);
list.add(6);
System.out.println("Original list: " + list);
list.sortDescending();
System.out.println("Sorted list: " + list);
}
}
class MyArrayList<E extends Comparable<E>> extends ArrayList<E> {
public void sortDescending() {
// Insertion sort algorithm
for (int i = 1; i < size(); i++) {
E key = get(i);
int j = i - 1;
while (j >= 0 && get(j).compareTo(key) < 0) {
set(j + 1, get(j));
j--;
}
set(j + 1, key);
}
}
}
```
In the above code, we define a class called SortingDemo which contains a main method. Inside the main method, we create an instance of MyArrayList and add 10 integers to it. We then print out the original list and call the sortDescending method on the list to sort it in descending order. Finally, we print out the sorted list.
The MyArrayList class extends the ArrayList class and defines a sortDescending method that implements the insertion sort algorithm to sort the list in descending order.
Next, we need to extend the application to measure the efficiency of the sorting algorithm in terms of the number of comparisons performed by the algorithm. We can modify the MyArrayList class to keep track of the number of comparisons performed during the sorting process, like this:
```
class MyArrayList<E extends Comparable<E>> extends ArrayList<E> {
private int comparisons;
public void sortDescending() {
comparisons = 0;
// Insertion sort algorithm
for (int i = 1; i < size(); i++) {
E key = get(i);
int j = i - 1;
while (j >= 0 && get(j).compareTo(key) < 0) {
set(j + 1, get(j));
j--;
comparisons++;
}
set(j + 1, key);
}
}
public int getComparisons() {
return comparisons;
}
}
```
We added a private variable called comparisons to keep track of the number of comparisons performed during the sorting process. We initialize it to 0 at the start of the sortDescending method and increment it for each comparison performed. We also added a public method called getComparisons to retrieve the number of comparisons performed.
Finally, we need to plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered in an Excel graph. To do this, we can modify the SortingDemo class to create three different lists of different sizes and sort each of them, recording the number of comparisons performed for each sort. We can then export the data to an Excel file and create a graph with the data.
Here's an example of the modified SortingDemo class:
```
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SortingDemo {
public static void main(String[] args) {
MyArrayList<Integer> list1 = new MyArrayList<Integer>();
list1.add(5);
list1.add(2);
list1.add(10);
list1.add(8);
list1.add(1);
list1.add(7);
list1.add(9);
list1.add(3);
list1.add(4);
list1.add(6);
System.out.println("Original list 1: " + list1);
list1.sortDescending();
System.out.println("Sorted list 1: " + list1);
int comparisons1 = list1.getComparisons();
MyArrayList<Integer> list2 = new MyArrayList<Integer>();
for (int i = 0; i < 100; i++) {
list2.add((int) (Math.random() * 100));
}
System.out.println("Original list 2: " + list2);
list2.sortDescending();
System.out.println("Sorted list 2: " + list2);
int comparisons2 = list2.getComparisons();
MyArrayList<Integer> list3 = new MyArrayList<Integer>();
for (int i = 0; i < 1000; i++) {
list3.add((int) (Math.random() * 100));
}
System.out.println("Original list 3: " + list3);
list3.sortDescending();
System.out.println("Sorted list 3: " + list3);
int comparisons3 = list3.getComparisons();
System.out.println("Comparisons 1: " + comparisons1);
System.out.println("Comparisons 2: " + comparisons2);
System.out.println("Comparisons 3: " + comparisons3);
try (XSSFWorkbook workbook = new XSSFWorkbook()) {
FileOutputStream out = new FileOutputStream(new File("sorting.xlsx"));
org.apache.poi.ss.usermodel.Sheet sheet = workbook.createSheet("Sorting");
Row headerRow = sheet.createRow(0);
Cell cell0 = headerRow.createCell(0);
cell0.setCellValue("Collection Size");
Cell cell1 = headerRow.createCell(1);
cell1.setCellValue("Comparisons");
Row row1 = sheet.createRow(1);
Cell cell10 = row1.createCell(0);
cell10.setCellValue("10");
Cell cell11 = row1.createCell(1);
cell11.setCellValue(comparisons1);
Row row2 = sheet.createRow(2);
Cell cell20 = row2.createCell(0);
cell20.setCellValue("100");
Cell cell21 = row2.createCell(1);
cell21.setCellValue(comparisons2);
Row row3 = sheet.createRow(3);
Cell cell30 = row3.createCell(0);
cell30.setCellValue("1000");
Cell cell31 = row3.createCell(1);
cell31.setCellValue(comparisons3);
workbook.write(out);
out.close();
System.out.println("Excel file written successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
In the above code, we create three different lists of sizes 10, 100, and 1000, and sort each of them using the MyArrayList class. We record the number of comparisons performed for each sort and print them to the console. We then create an Excel file and write the data to it, creating a graph with the data.
To create the graph in Excel, open the sorting.xlsx file and select the data in cells A1:B3. Click on the Insert tab and select the type of graph you want to create. You can then customize the graph as needed.
self.course_semester[course.id current_semester ^ SyntaxError: invalid syntax
这个语法错误是因为在 `self.course_semester[course.id current_semester]` 这个表达式中缺少了一个运算符,导致 Python 解释器无法正确识别代码。应该在 `course.id` 和 `current_semester` 之间添加一个运算符。如果是想将 `course.id` 和 `current_semester` 作为元组的两个元素存储到 `self.course_semester` 字典中,那么需要在它们之间添加一个逗号。如果是想将 `course.id` 和 `current_semester` 拼接在一起作为字典的键,那么需要使用字符串拼接符 `+`。
下面是两种可能的修复方法:
1. 将 `course.id` 和 `current_semester` 之间添加逗号:
```
self.course_semester[(course.id, current_semester)]
```
2. 使用字符串拼接符 `+` 将 `course.id` 和 `current_semester` 拼接在一起:
```
self.course_semester[course.id + str(current_semester)]
```
需要根据实际情况选择适合的修复方法。