美文网首页
排序算法

排序算法

作者: aofeilin | 来源:发表于2018-05-22 14:52 被阅读18次

1.算法合集

1.一系列的计算步骤,用来将输入数据,转换成想要的输出结果。
2.算法用来解决特定问题,解决同一个问题不同算法的效率常常相差非常大。有时候差距的影响,比硬件和软件一样大。
3.排序算法,加密算法。
<一>排序算法
最常见的多项式时间算法复杂度关系为:
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3)
指数时间算法复杂度关系为:
O(2n) < O(n!)< O(nn)
http://www.docin.com/p-1338970704.html
空间换时间

时间换空间

https://blog.csdn.net/love_chenfeng/article/details/44066407

https://blog.csdn.net/u010402786/article/details/51435735

https://baike.baidu.com/item/%E7%A9%BA%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6/9664257?fr=aladdin

1.空间复杂度:

(1)是对一个算法在运行过程中临时占用存储空间大小的量度。而一般的递归算法就要有O(n)的空间复杂度了,

该算法所耗费的存储空间。

(2)一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

(3)如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为O(log2n);当一个算法的空间复杂度与n成线性比例关系时,可表示为O(n).若形参为数组,则只需要为它分配一个存储由实参传送来的一个地址指针的空间,即一个机器字长空间。接下来一个一个分析。

2. 时间复杂度:

(1)冒泡排序:把小的向前移动,把大的元素向后移动。 复杂度0(N²) 空间复杂度 0(1). 不会随着n的增大,不会创建一定的变量。


336DEDCC-6DD4-459E-8122-FB73455E5DBC.png A75733A7-5261-4E8D-8D4D-93B227FE42EF.png

<2>快速排序 复杂度0(N²)
快速排序是对冒泡排序的改进.通过一趟排序将要排序的数据分割成对立的两部分,其中一部分的所有数据逗比另外一部分所有的数据小,
然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1.先从数列中取出一个数作为基准数。(一般是首元素,)
2.分区过程,将比这个数大的放右边 小于或者等于他的数放在它的左边。
3.对左右区间重复第二部,直到各个区间只有一个数。

>>>   i = 0   j=9.  基准数。21。   右边查找小于21的j的值赋给i。  ———      找到j=7   a[i] = a[j]    i=0. j=7
4      32        43        98      54    45     23   4  66  86
    >>>   i = 1   j=7.  基准数。21。  左边查找小于21的i 的值赋给j 。    ———    找到  i=1     j = 7,  a[j] = a[i] 
4      32        43        98      54    45     23   4  66  86
4      32        43        98      54    45     23   32     66  86
    >>>  i = 1    j=7  查找小于21的j.   右边查找小于21的j的值赋给i。  ———      找到j=1   i = 1
4      32        43        98      54    45     23   32     66  86
4      21        43        98      54    45     23   32     66  86              ———     a[i] = key;

回调。 sort(a,0, 0);
sort(a,2, 9);
>>> Key = 43——————右边查找小于43的j的值赋给i。——— I= 2 j = 9.
4 21 32 98 54 45 23 32 66 86 ——— j =7 I= 2 a[i] = a[j]
>>> Key = 43——————左边查找大于43的i 的值赋给j 。——— i= 3 j = 7
4 21 32 98 54 45 23 98 66 86
>>>Key = 43——————右边查找小于43的j的值赋给i。——— j = 6 i = 3
4 21 32 23 54 45 23 98 66 86
>>>Key = 43——————左边查找大于43的i 的值赋给j 。——— j = 6 i = 4
4 21 32 23 54 45 23 98 66 86
4 21 32 23 54 45 54 98 66 86
>>>Key = 43——————右边查找小于43的j的值赋给i。——— j =5 i = 4
查找小于43的23 j= 3 <i
a[i] = key;
4 21 32 23 43 45 54 98 66 86
回调。 sort(a,2, 3);
sort(a,5, 9);

86DD3F09B3A9FAFB4ED98E1A73CDCD36.png
BEDE5ABE3CA9107F6EE8C61CB4D009EB.png

<4>归并排序 又叫分治法,将排好序的子序列合并,得到完全有序的序列,

<5>希尔排序

<6>堆排序

相关文章

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

网友评论

      本文标题:排序算法

      本文链接:https://www.haomeiwen.com/subject/bgqgdftx.html