码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法及时间空间复杂度

时间:2018-01-23 14:28:57      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:shel   计数   堆排   中间   标准   pos   改进   class   步骤   

非线性时间比较类排序

 

一、交换类排序:冒泡排序和快速排序

冒泡排序:从数组中第一个数开始,依次与下一个数比较并次交换比自己小的数,直到最后一个数。如果发生交换,则继续下面的步骤,如果未发生交换,则数                 组有序,排序结束。

平均时间复杂度:n方

空间复杂度:1

如果用5秒存10个数据,那么20个数据需要多长时间?时间复杂度是n方

10*10=100   20*20=400   400/100=4     4*5=20

快速排序:快速排序又称分区交换排序,是对冒泡排序的改进,快速排序采用的思想是分治思想。

     从待排序的n个记录中任意选取一个记录(通常选取第一个记录)为分区标准;

               把所有小于该排序列的记录移动到左边,把所有大于该排序码的记录移动到右边,中间放所选记录,称之为第一趟排序;

               然后对前后两个子序列分别重复上述过程,直到所有记录都排好序。

时间复杂度:log以2为底n的对数

空间复杂度:log2n~n

二、插入类排序:直接插入排序和shell排序

直接插入排序:从待排序的n个记录中的第二个记录开始,依次与前面的记录比较并寻找插入的位置,每次外循环结束后,将当前的数插入到合适的位置。

 时间复杂度:n方

空间复杂度:1

三、选择类排序:简单选择排序(直接选择排序)  堆排序   归并排序 

简单选择排序:从所有记录中选出最小的一个数据元素与第一个位置的记录交换;然后在剩下的记录当中再找最小的与第二个位置的记录交换,循环到只剩下                        最后一个数据元素为止。

 时间复杂度:n方

空间复杂度:1

 

 

 

线性时间非比较类排序

 

一、计数排序

二、基数排序

三、桶排序

 

排序算法及时间空间复杂度

标签:shel   计数   堆排   中间   标准   pos   改进   class   步骤   

原文地址:https://www.cnblogs.com/tutuai/p/8335167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!