插入排序、归并排序、快速排序的比较和分析
三者的时间复杂度:
平均情况,依次是O(n^2), O(nlogn), O(nlogn)
最好情况,依次是O(n), O(nlogn), O(nlogn)
最差情况,依次是O(n^2), O(nlogn), O(n^2)
三者的空间复杂度:依次是O(1), O(n), O(1)
1)插入排序
#include <iostream>
#include <vector>
#include <cfloat>
using namespace std;
void insertsort(vector<double> & A)
{
for(int j=1; j<A.size(); j++)
{
double key = A.at(j);
int i;
for(i=j-1; i>=0 && A.at(i) > key; i--)
{
A.at(i+1) = A.at(i);
}
/*
int i=j-1;
while( i>=0 && A.at(i) > key )
{
A.at(i+1) = A.at(i);
i--;
}
*/
A.at(i+1) = key;
}
}
int main(int argc, char ** argv)
{
double arr[] = {234, 12, 34, 3.23, 34.3, 23, 124, 1, 2, 5, 3, 9, 12};
vector<double> A(arr,