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

来源:2-6 插入排序法的改进

纸女神

2018-02-15

	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的数量级

http://img.mukewang.com/szimg/5a84e0960001fec806770442.jpg

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

http://img.mukewang.com/szimg/5a84e2ca0001051906770442.jpg

为什么会这样呢

写回答

1回答

liuyubobobo

2018-02-15

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

0
2
纸女神
已解决,谢谢
2018-02-15
共2条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程