collections.binarysearch
时间: 2023-04-29 17:00:05 浏览: 147
collections.binarysearch 是 Python 的一个模块中的函数,它可以在有序列表中二分查找某个元素,并返回该元素在列表中的索引。如果查找的元素不在列表中,则返回负数。使用时需要先导入 collections 模块。
相关问题
collections.binarysearch空间复杂度和时间复杂度
collections.binarysearch()用于以二进制搜索的方式在有序列表中查找特定元素的位置。它接受两个参数:列表和要查找的元素。返回值是元素存在于列表中的索引,如果元素不存在于列表中,将返回应该插入该元素的索引位置的负值。
该函数的时间复杂度是O(log n),其中n是列表的长度。这是因为二进制搜索是一种分而治之的算法,每次将搜索空间减小一半,直到找到目标元素或搜索空间为空。由于每次操作都会将搜索空间减少一半,因此它的时间复杂度是对数级别的。
该函数的空间复杂度是O(1),即常数级别的空间需求。这是因为该函数不需要额外的内存来存储中间结果或搜索状态,它只是用给定的输入列表和元素进行搜索,没有使用额外的内存。
总结起来,collections.binarysearch()函数具有较低的时间复杂度和空间复杂度,适合在大型有序列表中进行高效的元素搜索。
package shiyan4_2; import java.util.*; public class MainClass { @SuppressWarnings("unchecked") public static void main(String args[]) { List<Book> bookList=new LinkedList<Book>(); String bookName[]={"C语言程序设计基础","计算机组成原理","JSP基础教程","C++程序设计", "J2ME编程","操作系统","数据库技术"}; double bookPrice[]={29,21,22,29,34,32,29}; Book book[]=new Book[bookName.length]; for(int k=0;k<book.length;k++) { book[k]=new Book(); book[k].setName(bookName[k]); book[k].setPrice(bookPrice[k]); bookList.add(book[k]); } Book newBook=new Book(); newBook.setPrice(29); newBook.setName("Java程序设计"); bookList.add(newBook); Collections.sort(bookList); int m=-1; System.out.println("经查询, "+newBook.getName()+"("+newBook.getPrice()+")与下列图书:"); while((m=Collections.binarySearch(bookList,newBook,null))>=0) { Book bk=bookList.get(m); System.out.println("\t"+bk.getName()+"("+bk.getPrice()+")"); 【代码4】 } System.out.println("价钱相同。"); } }
这段代码是一个关于图书的主程序,包含了以下步骤:
1. 创建一个LinkedList类型的图书列表bookList和两个数组bookName和bookPrice;
2. 遍历book数组,创建Book对象,设置其名称和价格,并将其添加到bookList中;
3. 创建一个新的Book对象newBook,设置其名称和价格,将其添加到bookList中;
4. 使用Collections.sort()方法对bookList进行排序;
5. 使用Collections.binarySearch()方法查找newBook在bookList中的位置;
6. 如果找到了newBook,则输出与newBook价格相同的图书名称和价格;
7. 如果没有找到newBook,则输出“没有找到与newBook价格相同的图书”。
【代码4】的实现应该是:
```
bookList.remove(m);
```
这行代码的作用是将找到的相同价格的图书从bookList中删除,以避免重复输出。
阅读全文