singly linked list 的结点的值进行排序 冒泡排序时间复杂度度是多少?

最优的冒泡排序时间复杂度度:O(nlogn)每一次取到的元素都刚好平分整个数组;

最差的冒泡排序时间复杂度度:O(n^2),每一次取到的元素就是数组中最小/最大的同冒泡排序;

平均冒泡排序时间复杂度度:O(nlogn);

 空间复杂度:每次递归须使用栈

最好的空间复杂度为:O(logn),每一次取到的元素都刚好平分整个数组;

最差的空間复杂度为:O(n) 每一次取到的元素就是数组中最小/最大的,同冒泡排序

最好、最差和平均冒泡排序时间复杂度度:O(nlog2n);

最好、最差和平均空間复杂度:O(n)每次递归需要用到一个辅助表,结束后释放掉所占的辅助空间(还有递归调用可能用到的栈)

最好的冒泡排序时间复杂度度:O(n),加入一个记录不需要继续排序的变量当已排序时可达到;

最差的冒泡排序时间复杂度度:O(n^2),一般情况;

平均冒泡排序时间复杂度度:O(n^2);

空间复杂度:每次递归须使用栈

最好、最差和平均空间复杂度:O(1)

最好的冒泡排序时间复杂度度:O(n)序列已排序好;

最差的冒泡排序时间複杂度度:O(n^2),序列是逆序排列;

平均冒泡排序时间复杂度度:O(n^2);

空间复杂度:每次递归须使用栈

最好、最差和平均空间复杂度:O(1)

}

冒泡排序时间复杂度度为O(N^2)

每佽比较两个相邻元素如果他们的顺序错误就把它们交换过来。

例如我们需要将 1235,9918,76  5个数进行从大到小排序,既然是从大到小排序也就是越小越靠后。
首先比较第一个数和第二个数第一个是12,第二个是35发现12 小于35,由于是越小越靠后因此要对这两个数交换位置,那么交换后的顺序为 3512,9918,76按照之前的方法,我们比较第二个和第三个数第二个是12第三个是99,99大于12所以要交换两个数的位置,茭换过的顺序为 3599,1218,76以此类推,可以通过下图来看12的位置变化:
3599,1876,12   第4次交换 (5-1假设要排序的个数为m,那么比较次数m-1那么朂糟糕情况下交互次数就是m-1)
进行4次交换后,就成功把最小的数12给排到最后面了

现在我们已经将最小的数给归位了,现在对剩下的数再進行归位细节我就不讲了,就将下重要的

对剩下4个数进行排序:

99,1876,3512 (交换了3次,比较次数3)

对剩下3个数进行排序:

对剩下2个数進行排序:

9976,1835,12 (交换了0次比较1次)

就如同一个气泡,一步步向上翻滚最后成功浮出水面,所以他叫冒泡排序

//遍历第一个到最後一个

为什么冒泡排序时间复杂度度为O(N^2)

所以最差的情况的冒泡排序时间复杂度度为O(N^2),最好的情况我就不推了O(N)

}

我要回帖

更多关于 堆排序的时间复杂度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信