insertion-sort相关内容

插入排序的最坏情况时间复杂度不正确

嗨,我是算法新手,对它很着迷。 我试图弄清楚插入排序的最坏情况下的时间复杂度,它被称为O (n ** 2)。相反,我们可以将时间复杂度设为O(N * logN)。 这是我的解释, 插入排序将查看第一个元素,并假定它已排序。接下来,它查看第二个元素,并与1个元素的先前排序子列表进行比较,并根据与先前排序子列表中的元素进行比较将其插入。 到处都提到要在前一个排序的子列表中插入元 ..
发布时间:2020-06-03 21:56:42 其他开发

选择或插入排序在学术环境之外有用吗?

这些排序算法在实际应用中是否有用? 还是仅仅是n ^ 2复杂度的排序算法的基本示例? 有人可以给一些吗?用法示例? 解决方案 插入排序是用于对非常小的数组进行排序的最快排序算法之一。 实际上,当要排序的子数组低于特定阈值时,许多quicksort / mergesort实现会停止,然后将插入排序用于这些小数组。 选择排序在实践中很少使用。 ..
发布时间:2020-06-03 21:44:05 其他开发

插入排序比冒泡排序好吗?

我正在为考试做修订。 在相同的平均复杂度O()下,我想知道在什么条件下插入排序会比冒泡排序更好。 N ^ 2)。 我确实找到了一些相关文章,但我听不懂。 有人介意以简单的方式解释它吗? 解决方案 bubbleort的优点在于可以检测到已经排序的列表: BubbleSort最佳情况: O(n) 但是,即使在这种情况下,插入排序也具有更好的/相同的性能。 B ..
发布时间:2020-06-03 21:18:23 其他开发

为什么平均情况下插入排序为Θ(n ^ 2)?

插入排序的运行时为Ω(n)(对输入进行排序时)和O(n 2 )(对输入进行反向排序时)。平均来说,它运行的时间为Θ(n 2 )。 为什么?例如,为什么平均情况不更接近O(n log n)? 解决方案 要回答这个问题,让我们首先确定我们如何评估插入排序的运行时间。如果我们可以为运行时找到一个很好的数学表达式,则可以操纵该表达式以确定平均运行时间。 我们需要掌握的关键条件是运行时插 ..
发布时间:2020-06-03 20:23:33 其他开发

插入排序与选择排序

我试图理解插入排序和选择排序之间的区别。 它们似乎都具有两个组成部分:未排序列表和排序列表。他们似乎都从未排序列表中选取一个元素,并将其放入适当位置的已排序列表中。我已经看到一些网站/书籍说选择排序是通过一次交换一个来实现的,而插入排序只是找到正确的位置并插入它。但是,我看过其他文章说了一些话,说插入排序也互换了。因此,我感到困惑。 解决方案 选择排序: 给出列表,获取当前元素 ..
发布时间:2020-06-03 20:01:54 其他开发

如何优化快速排序

我正在尝试制定一种有效的快速排序算法。它可以正常工作,但是当元素数量巨大且数组的某些部分已预先排序时,运行时间会很长。我在 quicksort 上查找Wikipedia文章,并在其中找到了这样的文字: 要确保最多使用O(log N)空间,请先递归到数组的较小一半,然后使用tail调用递归到另一个数组。 对于这样的小数组(即,其长度小于通过实验确定的阈值t),使用具有较小常数因子并因此在 ..
发布时间:2020-06-03 19:54:34 其他开发

在openmp中对数组进行排序

我有一个包含100个元素的数组,需要使用OpenMP使用插入排序进行排序.当我并行化排序时,它不会给出正确的值.有人可以帮忙吗 void insertionSort(int a[]) { int i, j, k; #pragma omp parallel for private(i) for(i = 0; i ..
发布时间:2020-05-21 01:25:22 其他开发

OpenMP中的插入排序

我正在尝试为插入排序编写OpenMP解决方案,但在使它并行运行并给出正确的结果时遇到了问题:).有什么方法可以使插入排序并行运行. 这是我的代码: void insertionsort(int *A, int num) { // clock_t start, stop; // // start=clock(); int k; #pragma omp parallel for sha ..

算法:混合MergeSort和InsertingSort执行时间

SO SO社区, 我是一名CS学生,目前正在进行结合MergeSort和InsertionSort的实验.可以理解,对于某个阈值S,InsertionSort将比MergeSort具有更快的执行时间.因此,通过合并两种排序算法,可以优化总运行时间. 但是,在使用1000个样本大小和不同大小的S进行多次实验后,每次实验的结果均未给出明确的答案.这是获得的更好结果的图片(请注意,有一半的时 ..
发布时间:2020-05-09 01:03:07 Java开发

在单链表上使用插入排序

所以我有一个分配给我一个随机数字列表的作业,我需要使用插入排序对它们进行排序.我必须使用一个单链表.我环顾了其他职位,但似乎无济于事.我知道什么是插入排序,但我只是不知道如何用代码编写. Node* insertion_sort(Node* head) { Node* temp = head_ptr; while((head->n n) && (temp != NUL ..
发布时间:2020-05-02 06:47:41 C/C++开发

iOS:如何在已排序的NSMutableArray中查找插入位置

我有一个NSMutableArray的排序对象,它们显示在UITableView中。 我想在数组中插入一个新对象并更新表视图 - 需要新插入对象的索引。 我找不到任何系统消息告诉我正确的插入索引到数组中我需要更新表视图。 我能找到的最好的是: 添加新对象 sort 使用旧的数组副本,找到新对象的位置(需要搜索) 或 写我自己的插入位置搜索 当然,必须有 ..
发布时间:2018-09-19 20:48:45 移动开发