内省排序IntroSort 22 Apr 2013 | algorithm Introspective Sorting(内省式排序)。 #include <stdio.h> #include <iostream> #include <algorithm> /* Musser在1996年发表了一遍论文,提出了Introspective Sorting(内省式排序), 它是一种混合式的排序算法: 1)在数据量很大时采用正常的快速排序,此时效率为O(logN)。 2)一旦分段后的数据量小于某个阈值,就改用插入排序,因为此时这个分段是基本有序的,这时效率可达O(N)。 3)在递归过程中,如果递归层次过深,分割行为有恶化倾向时,它能够自动侦测出来,使用堆排序来处理, 在此情况下,使其效率维持在堆排序的O(N logN),但这又比一开始使用堆排序好。 由此可知,它乃综合各家之长的算法。也正因为如此,C++的标准库就用其作为std::sort的标准实现。 */ using namespace std; void printArray(int a[], int n) { for(int i=0; i<n; i++) { printf("%d ", a[i]); } printf("\n"); } int main() { int a[] = {1,8,4,5,7,2}; printArray(a, 6); sort(a, a+6, std::less<int>()); printArray(a, 6); }