算法第二章:选择排序

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

在需要读取链表中的最后一个元素时,为什么不能直接读取?

  • 最后一个元素没有存储任何数据。
  • 链表的最后一个元素总是被其他程序占用。
  • 最后一个元素的地址是保密的。
  • 链表不支持随机访问, 必须从头开始遍历。 (correct)

在内存中存储一系列元素时,数组和链表的主要区别是什么?

  • 数组的长度是固定的, 而链表的长度可以动态改变。
  • 数组只能存储整数, 而链表可以存储任何类型的数据。
  • 数组中的元素在内存中必须相邻, 而链表则不需要。 (correct)
  • 数组的访问速度比链表慢。

如果一个排序算法的时间复杂度是$O(n^2)$,这意味着什么?

  • 算法的运行时间与输入数据大小的对数成正比。
  • 算法的运行时间与输入数据大小成正比。
  • 算法的运行时间与输入数据大小的平方成正比。 (correct)
  • 算法的运行时间与输入数据的大小无关。

为什么要对数据进行排序后才使用二分查找?

<p>排序是二分查找的前提条件, 有序数据才能保证二分查找的正确性。 (B)</p>
Signup and view all the answers

如果你的朋友想在数组的开头插入一个元素,这会导致什么问题?

<p>这可能会导致数组中的所有元素都必须向后移动, 空出第一个位置。 (A)</p>
Signup and view all the answers

在链表中插入一个元素比在数组中插入一个元素有什么优势?

<p>链表只需要修改指针, 没有元素移位, 所以更快。 (B)</p>
Signup and view all the answers

选择排序的基本思想是什么?

<p>每次选择未排序部分的最小元素放到已排序部分的最前面。 (C)</p>
Signup and view all the answers

如果你的系统内存中有足够的空间,但程序却无法为数组分配所需的连续内存,可能是什么原因?

<p>内存中存在大量不连续的空闲空间, 无法满足数组对连续性的需求。 (B)</p>
Signup and view all the answers

下列关于大O表示法,哪个描述是正确的?

<p>大O表示法描述了算法的最坏情况下的运行时间增长趋势。 (D)</p>
Signup and view all the answers

在现实场景中,什么时候应该使用链表而不是数组?

<p>当需要频繁进行插入和删除操作,且元素数量不确定时。 (D)</p>
Signup and view all the answers

以下哪个操作在数组中比在链表中效率更高?

<p>查找数组的中间元素。 (C)</p>
Signup and view all the answers

如果使用选择排序算法对一个已经排序好的数组进行排序,算法的运行时间会如何?

<p>算法的运行时间不会改变, 因为无论输入如何, 它总是需要遍历所有元素。 (C)</p>
Signup and view all the answers

在什么情况下,预留座位(即预先分配比当前需要更多的内存空间)是一种合理的权变措施?

<p>当元素的数量经常变化,且变化范围大致可预测时。 (C)</p>
Signup and view all the answers

以下哪种数据结构最适合实现一个后进先出(LIFO)的栈?

<p>数组 (A)</p>
Signup and view all the answers

下列关于混合数据结构(如链表数组)的描述,哪个是正确的?

<p>混合数据结构结合了不同数据结构的优点,可以优化特定操作的性能。 (D)</p>
Signup and view all the answers

你如何评估为特定问题选择哪种数据结构或算法?

<p>综合考虑时间、空间复杂度,以及操作的频率和数据的特点。 (D)</p>
Signup and view all the answers

假设有一个包含1000个元素的数组,你希望在其中间位置插入一个新元素,大约需要移动多少个元素?

<p>大约500个 (B)</p>
Signup and view all the answers

当你需要在排序算法的运行时间和内存使用之间做出权衡时,哪种排序算法可能是最好的选择?

<p>选择排序 (A)</p>
Signup and view all the answers

下列哪种情况不适合使用数组?

<p>需要在数据结构中间频繁插入或删除元素。 (C)</p>
Signup and view all the answers

如果需要频繁地合并两个有序列表,哪种数据结构更适合?

<p>链表 (D)</p>
Signup and view all the answers

Flashcards

内存单元的地址

内存中的一个位置,可存储数据。

数组

所有元素在内存中都是相连的。

链表

元素可存储在内存的任何地方,每个元素都存储下一个元素的地址。

数组:随机访问

你可直接跳到第十个元素。

Signup and view all the flashcards

链表:顺序访问

要读取第十个元素,得先读取前九个元素。

Signup and view all the flashcards

顺序访问

从第一个元素开始逐个地读取元素。

Signup and view all the flashcards

随机访问

直接跳到第十个元素。

Signup and view all the flashcards

索引

元素的位置。

Signup and view all the flashcards

选择排序

首先找出最大的元素,将其添加到新数组中,再重复此过程。

Signup and view all the flashcards

findSmallest

找出数组中最小元素的函数。

Signup and view all the flashcards

Study Notes

第二章:选择排序

  • 本章学习数组与链表两种基础数据结构,以及排序算法。
  • 了解它们的优缺点,可针对不同算法选择合适的数据结构。
  • 选择排序是快速排序的基石,理解选择排序有助于理解快速排序。

知识储备

  • 需要理解大O表示法和对数,相关知识在第一章。

2.1 内存的工作原理

  • 计算机内存类似于有很多抽屉的柜子,每个抽屉都有地址。
  • 存储数据时,计算机会提供一个存储地址。

2.2 数组和链表

  • 数组和链表是存储多项数据的两种基本方式。
  • 数组:
    • 数组内的元素在内存中是相连的。
    • 数组添加新元素很慢,因为可能需要移动到其他内存。
    • 一种解决办法是“预留座位”,但存在浪费内存,以及预留座位不够用的缺点。
  • 链表:
    • 链表中的元素可存储在内存的任何地方。
    • 链表的每个元素都存储了下一个元素的地址。
    • 不需要移动元素,但是要从头开始查找。

2.2.2 数组

  • 链表的优势在插入元素方面,数组的优势是可以跳跃读取,速度快。知道其中每个元素的地址,例如,假设有一个数组,它包含五个元素,起始地址为00,那么元素#5的地址是04。只需执行简单的数学运算就知道:04。

2.2.3 术语

  • 数组元素带编号,从0开始,元素的位置称为索引。
  • 数组读取速度快,链表插入/删除速度快。

2.2.4 在中间插入

  • 链表插入元素很简单,只需修改它前面的那个元素指向的地址,而使用数组时,则必须将后面的元素都向后移。

2.2.5 删除

  • 删除元素:链表只需修改前一个元素指向的地址。数组则必须将后边的元素都向前移。

2.3 选择排序

  • 选择排序:遍历列表,找出最大(或最小)的元素,将其添加到新列表中。
  • 简单排序使用了n次,每次都检查列表中的每个元素,所需时间为O(n)。
  • 找出最大或最小的元素的时间为O(n)。
  • 选择排序的总时间为O(n*n),即O(n²)。

需要检查的元素数越来越少

  • 每次需要检查的元素数逐渐减少,平均每次检查的元素数为 1/2 * n。
  • 运行时间实际上是 O(n × 1/2 × n),但大O表示法省略常数,因此还是 O(n²)。
  • 更快的排序算法是快速排序,运行时间为O(n log n)。

2.4 小结

  • 计算机内存犹如一大堆抽屉,每个位置都有它的地址。
  • 需要存储多个元素时,可使用数组和链表。
  • 数组的所有元素都在一起。
  • 链表的元素是分开的,其中每个元素都存储了下一个元素的地址。
  • 数组的读取速度很快。
  • 链表的插入和删除速度很快。
  • 在同一个数组中,所有元素的类型都必须相同(都为int、double等)。

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Are you a Selection Sort Pro?
6 questions
Selection Sort Algorithm
10 questions

Selection Sort Algorithm

IntelligentWilliamsite4456 avatar
IntelligentWilliamsite4456
Selection Sort Algorithm
8 questions

Selection Sort Algorithm

FastGrowingSelenite8102 avatar
FastGrowingSelenite8102
Use Quizgecko on...
Browser
Browser