随笔分类 -  算法

摘要:插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 平均时间复杂度为O(n^2),最好的情况是O(n),即数组已经是有序状态,最差O(n^2),辅助存储为O(1)。插入排序是稳定的排序算法。 阅读全文
posted @ 2018-08-02 12:51 此女子 阅读(123) 评论(0) 推荐(0)
摘要:直接选择排序的最好、最坏以及平均的时间复杂度均为O(n^2)。辅助空间为O(1),且为不稳定的排序算法。 阅读全文
posted @ 2018-08-02 09:02 此女子 阅读(126) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/MOBIN/p/5374217.html https://www.cnblogs.com/chengxiao/p/6194356.html 堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它是不稳定排序。 一般升序采用大顶堆, 阅读全文
posted @ 2018-07-31 09:02 此女子 阅读(232) 评论(0) 推荐(0)
摘要:快速排序是不稳定的算法,它不满足稳定算法的定义: 算法稳定性:假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面,并且排序之后,a[i]仍然在a[j]前面,则这个排序算法是稳定的。 快速排序算法的时间复杂度在最坏情况下是O(N^2),平均的时间复杂度是O(N*logN)。 阅读全文
posted @ 2018-07-31 08:16 此女子 阅读(198) 评论(0) 推荐(0)
摘要:思想:(升序)相邻两个比较大小,如果前者大于后者,则互换;第一趟下来,最大的数就到正确位置上了。依此类推…… 冒泡排序是交换排序的一种。 代码: 时间复杂度: 第一趟排序需要比较n-1次,第二趟需要比较n-2次,……,最后一趟只需比较1次,因此复杂度为:(n-1)+(n-2)+……+2+1 = 1/ 阅读全文
posted @ 2017-12-25 10:30 此女子 阅读(262) 评论(0) 推荐(0)