随笔分类 -  排序

leetcode 347 (堆排序)
摘要:void topdown(map<int,int> &m,vector<int> &heap,int size,int r) { int tmp=heap[r]; int i; for(i=r;i*2+1<size;) { int j=i*2+1; if(j<size-1&&m[heap[j]]<m 阅读全文

posted @ 2020-03-01 02:53 QingFengDaHui 阅读(370) 评论(0) 推荐(0)

leetcode 215 找第k大的元素(线性期望时间选择问题)
摘要:其实线性期望时间的选择问题就是使用快速排序的方法,不过相较于快速排序需要对枢纽值两边进行递归,找第k大元素只需要对枢纽值的一边进行递归; 因此其平均时间复杂度为O(N)=N+N/2+N/4+...<2N,不过该方法的最坏情况的时间复杂度为O(N^2)。 void swap(vector<int> & 阅读全文

posted @ 2020-02-29 22:33 QingFengDaHui 阅读(194) 评论(0) 推荐(0)

各种排序算法详解
摘要:1、插入排序 插入排序简单来说就是遍历到 第 i 个元素时,前面 i-1 个元素已经排好了序,因此第 i个元素只需要从第i-1个元素向前比较,找到第一个小于等于它的元素插入在其后面即可,相应的后面的元素向后挪动 插入排序的算法复杂度:最坏和平均时间复杂度都为O(n^2),如果输入数据已经排序好了则为 阅读全文

posted @ 2020-02-29 21:26 QingFengDaHui

导航