排序算法
依然有清风
通信咸鱼;图像处理渣渣;机器学习膜拜者
展开
-
排序算法--快速排序(C++)
快速排序是冒泡排序的一种改进,属于交换排序,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 C++中可以直接调用函数qsort()对数组进行排序。 void qsort(void *base, int nelem, int wid...原创 2018-03-30 20:47:08 · 160 阅读 · 0 评论 -
排序算法--插入排序(C++)
插入排序一般用直接插入法,时间复杂度:最好情况O(n),平均情况和最差情况复杂度为O(n^2)。基本方法是:序列分为有序列和无序列,然后每次从无序列取出一个元素,与有序列进行比较,插入进有序列,直至无序列为空。假设序列为[9,8,7,6,5,4,3,2,1]则产生有序列[9],无序列为[8,7,6,5,4,3,2,1];然后无序列取出8,插入有序列,得到[8,9],有序列进行数组的移动;重复这个过...原创 2018-05-09 20:19:00 · 160 阅读 · 0 评论 -
排序算法-归并排序(C++、链表)
归并排序采用分而治之的方法,把n个元素按照非递减顺序排列。常用结构是:若n为1,则算法终止;否则,将序列划分为k个子序列(int k>=2)。先对每一个子序列进行排序,然后将有序子序列归并为一个序列。归并排序的时间复杂度是Ω(nlogn),平均复杂度和最坏复杂度均为Ω(nlogn)。假设现在初始段为[8,4,5,6,2,1,7,3]先分:[8,4,5,6],[2,1,7,3]再分:[8,4]...原创 2018-05-05 21:24:32 · 582 阅读 · 0 评论 -
排序算法--堆排序(C++)
#include<iostream>#include<vector>using namespace std;void adjustHeap(vector<int> &arr, int i, int n)//3.调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上){ int j = i * 2 + 1;//子节点 while (j<...原创 2018-07-18 11:02:07 · 131 阅读 · 0 评论