排序问题
_Index_
这个作者很懒,什么都没留下…
展开
-
排序(5)----归并排序及证明其时间复杂度O(Nlog^N)
归并问题可以解决有多个逆序对和最小和问题。下面证明其时间复杂度:对N个数归并排序的用时等于对两个大小为N/2的递归排序所用的时间再加上合并的时间: T(N)=2T(N/2)+N 两边同时除N T(N)/N=T(N/2)/(N/2)+1; T(N/2)/(N/2)= T(N/4)/(N/4)+1; . ...原创 2019-11-29 00:13:08 · 616 阅读 · 0 评论 -
排序(4)---堆排序
堆排序:把堆顶元素不断的和末尾元素互换,互换后使得末尾元素为n-1,再从堆顶元素往下滤,使之保持堆的性质即可。#include<bits/stdc++.h>using namespace std;typedef struct Heap{int capacity;int *data;} *heap; void percolatedown( heap h,int ...原创 2019-11-28 18:46:51 · 78 阅读 · 0 评论 -
排序(3)--桶式排序
事先设置桶的最大个数为要排列数中的最大值,把要排列的数放入相应下标对应的桶里,最后,从左到右遍历桶,桶里的个数就是该桶的下标所占有的个数,输出桶的下标即可。桶式排序是以空间换时间,并且对要排列的数有限制,不能为负。#include<bits/stdc++.h>using namespace std;void bucksort(int a[],int n,int m){...原创 2019-11-28 13:42:01 · 139 阅读 · 0 评论 -
排序(2)---插入排序、希尔排序
插入排序思想:有一串无序数列,从左到右依次排序把数放入排序篮里。如: 23 46 0 8 11 18 插入46 (23 46) 0 8 11 18插入23 (0 23 46) 8 11 18插入8 (0 8 23 46) 11 18插入11 ...原创 2019-11-28 12:38:50 · 62 阅读 · 0 评论 -
排序(1)--快速排序及证明平均复杂度O(n*lgn)与最坏情况O(N^2)
快速排序:首先说下复杂度O(lgn)是如何证明的,在一个数组中查一个数,一直对半下去… 查询次数 1 2 3 k待查询数量 N/2 N/(2^2) N/(2^3) N...原创 2019-11-28 00:16:30 · 709 阅读 · 0 评论