实测冒泡排序、简单选择排序、直接插入排序的性能

分别使用1e3、1e4、1e5大小的随机数组测试性能。直接插入的性能最好

 冒泡简单选择直接插入
1e32 ms1 ms0 ms
1e4224 ms37 ms15 ms
1e525708 ms3709 ms1468 ms

测试代码如下:

#include<vector>
#include<cstdlib> 
#include<ctime>
using namespace std;

void testPerformance(void(*sortFun)(vector<int>&),int);
void bubbleSort(vector<int>&);
void simpleSlectionSort(vector<int>&);
void straightInsertionSort(vector<int>&);

const int N = 1e3;
int main() 
{
	cout << "bubbleSort:" << endl;
	testPerformance(bubbleSort, N);
	cout << endl;


	cout << "simpleSlectionSort:" << endl;
	testPerformance(simpleSlectionSort, N);
	cout << endl;

	cout << "straightInsertionSort:" << endl;
	testPerformance(straightInsertionSort, N);
	cout << endl;

}

void straightInsertionSort(vector<int> &a) 
{
	int len = a.size();
	for (int i = 0; i < len - 1; i++) 
	{
		int j = i;  // 向前滑动寻找插入位置
		int tmp = a[i + 1];
		while (j>=0 && tmp<a[j])
		{
			a[j + 1] = a[j];
			j--;
		} // 将i+1插入到j+1
		a[j + 1] = tmp;
	}
}

void simpleSlectionSort(vector<int> &a) 
{
	int len = a.size();
	for (int i = 0; i < len-1; i++) 
	{
		int argmin = i;
		for (int j = i + 1; j < len; j++) 
		{
			if (a[j] < a[argmin]) 
			{
				argmin = j;
			}
		}
		swap(a[i], a[argmin]);
	}
}

void bubbleSort(vector<int> &a)
{
	int len = a.size();
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = len - 1; j > 0; j--)
		{
			if (a[j] < a[j - 1])
			{
				swap(a[j], a[j - 1]);
			}
		}
	}
}

void testPerformance(void(*sortFun)(vector<int>&),int n) 
{
	srand(0);
	vector<int>a(n);
	for (int i = 0; i < n; i++)
	{
		a[i] = rand();
	}
	clock_t time_start = clock();
	sortFun(a);
	clock_t time_end = clock();
	cout << "time use:" << 1000 * (time_end - time_start) / (double)CLOCKS_PER_SEC << "ms" << endl;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值