算法
汪聘
在读研究生
展开
-
选择排序
选择排序主要是直接选择排序和堆排序,直接选择排序时间复杂度为O(n*n),不稳定的算法。堆排序时间复杂度为O(n*logn),稳定的算法C++实现(代码已经测试过):#include<iostream>using namespace std;class SelectSort{public: //直接选择排序,不稳定,O(n*n) void selectSort(int a[],i原创 2016-04-25 19:38:40 · 274 阅读 · 0 评论 -
交换排序
交换排序一般包括冒泡排序,时间复杂度为O(n*n),快速排序,最好情况和平均情况时间复杂度是O(n*logn),最坏情况是O(n*n)。快速排序可以看我之前专门有一章是扎un们讲快速排序的原创 2016-04-25 15:16:54 · 282 阅读 · 0 评论 -
插入排序
插入排序主要有直接插入排序和希尔排序希尔排序是直接插入排序的威力增强版。将列表元素分成若干组,,如下图{0,8,3,4,5,6,2,4,40,3}原创 2016-04-26 22:47:45 · 226 阅读 · 0 评论 -
堆排序
堆排序是不稳定的排序算法,算法时间复杂度,三种情况下均是O(nlog(n))。步骤和C++(大顶堆)实现如下:1:根据初始数组构建初始堆: ![这里写图片描述](http://jingyan.baidu.com/album/5225f26b057d5de6fa0908f3.html?picindex=1) 调整过程如下: ![这里写图片描述](http://jingyan.bai原创 2016-04-18 16:50:02 · 296 阅读 · 0 评论 -
各个排序算法的比较
各个排序算法的说明如下:原创 2016-04-18 17:00:08 · 284 阅读 · 0 评论 -
归并排序
归并排序三种情况下时间复杂度均是O(n*log(n)).是一种稳定的排序。详解:归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列,归并排序包括两个步骤,分别为: 1)划分子表 2)合并半子表 首先我们来讨论归并算法,归并算法将一系列数据放到一个向量中,索引范围为[first,last],这个序列由两原创 2016-04-22 16:20:56 · 191 阅读 · 0 评论 -
快速排序
快速排序在最坏情况下和冒泡排序一样时间复杂度O(N*N).平均时间复杂度为O(NlogN).C++代码如下/快速排序/includeusing namespace std;void quitSort(int a[],int left,int right){ if(left>=right){ return; } int i=left,j=right;原创 2016-04-16 14:21:52 · 280 阅读 · 0 评论 -
基数排序
***基数排和归并排序一样是稳定的排序算法,时间复杂度,平均情况和最坏情况下为O(d(r+n)),最坏情况为O(d(dr+n))***原创 2016-04-23 23:05:16 · 303 阅读 · 0 评论 -
轻松搞定技术面系列 1——基础篇
以下收录了多年面试的经典题目,包括答案。有段时间没有更新新文章了,接下来想把文章的更新速度放慢点,主要是想写出更高质量的文章,最近收录了2 调度和运行:线程是进程的实体,是系统调度的基本单位,线程的调度要依赖进程,不能单独运行。线程的上下文切换更快。2 谈谈Vector和ArrayList3 谈谈HashMap和HashTab原创 2016-08-17 18:41:14 · 1075 阅读 · 0 评论