请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

插入排序在VS上特别快,已调release

	template<typename T>
	void insertionSort(T arr[], int n) {
		for (int i = 1; i < n; i++) {
			T e  = arr[i];
			int j;
			for (j = i; j > 0 && arr[j] < arr[j - 1]; j--) 
					arr[j] = arr[j - 1];
			arr[j] = e;
		}

	}
int main()
{
	const int n = 10000;
	int *arr1 = SortTestHeiper::generateRandomArray(n, 0, n);
	int *arr2 = SortTestHeiper::copyIntArray(arr1, n);
	SortTestHeiper::TestSort("Insertion Sort", Sort::insertionSort, arr1, n);
	SortTestHeiper::TestSort("Selection Sort", Sort::selectionSort, arr2, n);

	delete[] arr1;
	delete[] arr2;
    return 0;
}
10000的数量级

https://img1.sycdn.imooc.com//szimg/5a84e0960001fec806770442.jpg

1000000的数量,selection sort 太慢了,注释了

https://img1.sycdn.imooc.com//szimg/5a84e2ca0001051906770442.jpg

为什么会这样呢

正在回答

1回答

O(n^2)的排序就是这么慢哦。但是如果换成O(nlogn)的排序,100万的数据是小case,这就是算法的力量:)

0 回复 有任何疑惑可以回复我~
  • 提问者 纸女神 #1
    重点是插入排序太快了吧O(n^2)百万数量级可以在0.002秒完成?
    回复 有任何疑惑可以回复我~ 2018-02-15 12:41:14
  • 提问者 纸女神 #2
    已解决,谢谢
    回复 有任何疑惑可以回复我~ 2018-02-15 12:55:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信