Algorithm 哪些数据结构适合对这些功能进行分组?哪些算法可用于插入和检索?

Algorithm 哪些数据结构适合对这些功能进行分组?哪些算法可用于插入和检索?,algorithm,data-structures,Algorithm,Data Structures,我有一份50个科目的清单。 我还有一份1000所学校的名单,这些学校将至少教授其中一门或多门课程。 每次我搜索一所学校时,我都想用它教的科目来缓存这所学校。以最佳方式保存此数据的好方法是什么 我会将此信息存储在HashMap中。HashMap存储键值对,因此您可以将每个学校映射到学校教授的科目 下面是用java实现的代码的示例: 我建议您使用哈希表,使用school作为键,使用subject作为元素。哈希表的insert、delete和search操作的复杂性可能会因处理额外冲突的方式而异。许

我有一份50个科目的清单。 我还有一份1000所学校的名单,这些学校将至少教授其中一门或多门课程。
每次我搜索一所学校时,我都想用它教的科目来缓存这所学校。以最佳方式保存此数据的好方法是什么

我会将此信息存储在HashMap中。HashMap存储键值对,因此您可以将每个学校映射到学校教授的科目

下面是用java实现的代码的示例:


我建议您使用哈希表,使用school作为键,使用subject作为元素。哈希表的insert、delete和search操作的复杂性可能会因处理额外冲突的方式而异。许多键可能会在同一索引中进行哈希处理。但是在你的问题中,冲突是不可避免的,很多学校都有相同的主题,因此,例如,使用开放寻址和双哈希可以减少额外的冲突,但不会减少问题中的隐式冲突。如果你想自己实现,使用一个好的散列函数在索引上均匀分布键和一个简单的冲突列表,可以使您在O1中实现插入,在O50中实现删除搜索主题及其删除,在最坏的情况下在O50中实现搜索,我认为这对于解决问题是好的、简单的和快速的。有关哈希表以及如何实现它的更多信息:

public class Main{

     public static void main(String[] args){

         //Creates a HashMap with a String as the key and String[] as the value.
         Map<String, String[]> schools = new HashMap<String, String[]>();

         //Name of the college 
         String college = "College";

         //Subjects offered at said college
         String[] subjects = {"Physics","Calculus","Algorithms"};

         //Stores the college and its subjects within the HashMap
         schools.put(college, subjects);

         //Search and print the given subjects any college stored in the map. 
         System.out.println(Arrays.toString(schools.get("College")));

    }
}
[Physics, Calculus, Algorithms]