快速排序的改进算法

今天想到了一种改进的快速排序,不知道之前有没有人想到过
同样是快速排序,稍微一点改进可能带来运算效率的质变
FAST_SORT_TYPE_1:是比较常见的版本
FAST_SORT_TYPE_2:是我的改进版本,
慢慢增加待排数组长度len,你会发现效率的差别逐渐显现出来

/*
   Improved fast sort algorithm
   bobten2008@gmail.com 
   all rights reserved
   2011.08.30
*/

#include <iostream>
#include <ctime>
//#define debug 1

using namespace std;

void swap(int* v1, int* v2) {
	int temp = *v1;
	*v1 = *v2;
	*v2 = temp;
}

void printArray(int s, int e, int array [], char* str) {
	printf("%s", str);
	for(int i = s; i <= e; i++) {
		printf("%d ", array[i]);
	}
	printf("\n");
}

namespace FAST_SORT_TYPE_1 {
	int partition(int head, int tail, int array[]) {
		int curVal = array[head];
		int s = head + 1;
		int k = head;

#ifdef debug
		printArray(head, tail, array, "before partition:");
#endif

		while(s <= tail) {
			if(array[s] < curVal) {
				k++;
				swap(&array[k], &array[s]);
			}
			s++;
	     	
		}

        swap(&array[k], &array[head]);

#ifdef debug
		printArray(head, tail, array, "after  partition:");
#endif

		return k;
	}

	void sort(int head, int tail, int array[]) {
		if(head >= tail) return;

		int mid = partition(head, tail, array);
		int new_tail_1 = mid - 1;
		int new_tail_2 = mid + 1;
		
		sort(head, new_tail_1, array);
		sort(new_tail_2, tail, array);

		return;
	}
}

namespace FAST_SORT_TYPE_2 {
	int partition(int head, int tail, int array[]) {
		int curVal = array[head];
		int s = head + 1;
		int k = head;

		int tag = 0, type = 0, pos = 0;

#ifdef debug
		printArray(head, tail, array, "before partition:");
#endif

		while(s <= tail) {
			if(array[s] < curVal || (type != 0 && array[s] == curVal)) {
				k++;
				tag = 1;
				swap(&array[k], &array[s]);
			}
			if(++s > tail) {
				if(type == 0) {
					swap(&array[k], &array[head]);
					pos = k;
				}
				// the second time for checking should be carried out
				// this is only used for exis detection after the first round
				if(type && !tag) break;
				type = 1;
				tag = 0;
				s = k + 1;
			}
		}

#ifdef debug
		printArray(head, tail, array, "after  partition:");
#endif

		return pos;
	}

	void sort(int head, int tail, int array[]) {
		if(head >= tail) return;

		int mid = partition(head, tail, array);
		int new_tail_1 = mid - 1;
		int new_tail_2 = mid + 1;
		while(new_tail_1 >= 0 && array[new_tail_1] == array[mid]) new_tail_1--;
		while(new_tail_2 <= tail && array[new_tail_2] == array[mid]) new_tail_2++;

		sort(head, new_tail_1, array);
		sort(new_tail_2, tail, array);

		return;
	}
}

int main() {
	const int len = 10000;
	const int max_val = 10;
	int array_1[len] = {0};
    int array_2[len] = {0};

	srand(time(NULL));
	for(int i = 0; i < len; i++) {
		array_1[i] = array_2[i] = rand() % max_val + 1;
		//array_1[i] = array_2[i] = 1;
	}

	clock_t start,finish;
	double totaltime; 


	printf("This fast sort type_1\n");
	//printArray(0, len - 1, array_1, "original:");
	start=clock();
	FAST_SORT_TYPE_1::sort(0, len - 1, array_1);
	finish=clock();  
	//printArray(0, len - 1, array_1, "sorted:");
	totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
	printf("sort_type_1 的运行时间为: %lf 秒!\n\n", totaltime);

	printf("This fast sort type_2, improved one\n");
	//printArray(0, len - 1, array_2, "original:");
	start=clock();
	FAST_SORT_TYPE_2::sort(0, len - 1, array_2);
	finish=clock();  
	//printArray(0, len - 1, array_2, "sorted:");
	totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
    printf("sort_type_2 此程序的运行时间为: %lf 秒!\n\n", totaltime);

	return 0;
}



当len = 2000时的测试结果

This fast sort type_1
original:8 8 6 1 5 6 3 1 2 9 6 10 9 2 10 10 9 6 4 9 9 1 5 7 8 10 4 1 10 1 8 1 7
1 1 1 4 8 3 2 4 2 9 3 6 10 8 4 6 5 9 10 7 5 7 9 3 5 4 2 6 1 7 1 10 2 5 10 5 5 9
3 3 4 8 5 2 3 4 5 2 8 4 5 5 8 4 1 10 8 8 5 9 5 9 2 5 7 7 6 3 6 1 2 7 10 7 2 3 6
9 6 8 9 9 1 2 4 10 3 6 1 9 5 8 10 7 9 6 4 2 8 1 7 9 7 8 6 7 7 8 3 5 3 9 6 10 10
3 4 6 2 1 10 9 7 9 1 1 3 4 10 9 5 7 5 1 2 3 8 2 6 4 5 10 9 4 4 10 3 1 6 7 9 1 7
10 8 5 8 3 1 1 1 1 2 1 10 3 2 9 6 4 1 6 6 2 2 5 3 9 4 10 8 8 9 3 5 7 6 9 8 10 6
1 5 9 8 2 4 2 3 7 1 6 5 8 4 6 10 4 5 3 2 6 4 10 7 8 6 2 6 1 4 10 3 1 10 7 6 1 9
1 4 9 1 1 1 8 1 7 6 9 2 9 9 6 6 8 10 3 5 10 9 8 9 6 4 4 8 7 4 1 1 9 2 3 7 7 7 1
1 1 7 6 8 6 2 1 2 7 9 8 2 5 2 3 6 10 8 2 7 1 1 1 4 4 3 7 8 4 1 6 9 10 2 5 7 2 2
6 6 10 4 9 4 1 6 2 1 4 7 2 9 2 1 9 7 4 3 4 4 7 6 6 1 2 8 4 9 5 3 5 7 6 10 10 1 3
 8 4 3 1 3 10 3 8 8 1 6 2 6 5 1 6 6 5 6 7 7 3 3 4 10 9 7 7 1 9 3 5 7 10 10 5 9 3
 8 7 9 8 6 4 2 3 1 1 10 9 3 6 3 2 5 9 1 9 4 9 6 6 6 5 8 2 2 6 8 10 2 6 5 3 8 10
10 5 4 8 1 4 6 2 5 8 10 10 1 1 4 9 9 1 2 8 6 10 3 3 4 3 8 10 7 2 2 5 5 5 4 6 6 4
 2 3 3 2 2 3 10 9 9 5 3 4 10 9 7 1 3 4 3 9 4 3 10 6 10 3 2 9 5 8 8 3 4 5 10 9 4
1 3 10 7 9 9 9 6 4 2 10 10 9 10 5 4 1 2 6 3 7 9 7 6 2 10 7 9 3 3 7 5 6 9 1 6 2 3
 9 1 1 3 10 2 7 9 4 4 9 8 4 2 7 3 7 9 6 5 6 2 7 6 2 1 4 1 3 2 10 8 7 3 6 4 9 5 8
 3 4 3 3 5 3 7 9 5 8 10 6 3 6 7 5 1 1 1 9 8 10 9 1 2 2 9 9 5 9 9 1 2 9 1 1 4 7 9
 6 8 3 3 9 3 6 9 10 9 5 9 3 6 8 10 2 8 8 9 3 4 4 7 8 2 2 5 5 2 3 2 10 1 5 4 3 5
3 6 6 6 6 6 7 6 9 5 2 8 5 2 9 2 9 1 1 9 8 1 6 6 8 10 7 8 6 7 6 9 4 6 6 1 3 8 10
2 4 4 7 5 2 10 7 4 4 7 7 1 1 8 9 3 6 9 4 2 2 8 7 8 9 1 4 9 3 6 7 4 5 9 1 8 6 10
1 9 1 9 2 1 2 4 10 10 4 7 8 7 8 4 3 5 10 1 4 6 8 5 2 1 6 4 8 9 6 4 3 1 4 7 3 10
6 7 1 6 3 4 3 3 1 3 6 8 8 10 1 6 1 8 5 2 1 7 2 6 8 1 10 7 2 10 8 3 1 4 8 3 1 10
1 5 1 2 4 7 8 2 9 1 1 8 9 7 9 8 8 10 6 7 5 10 7 5 3 8 2 6 6 4 8 9 4 10 9 10 6 1
5 8 4 7 6 7 10 8 6 2 1 3 10 5 4 3 9 10 5 2 6 9 8 8 6 4 4 9 8 3 2 8 9 2 9 1 5 10
10 8 8 5 7 6 2 6 9 9 8 6 6 8 7 2 2 10 2 1 6 9 8 1 4 5 2 5 2 6 5 9 4 7 9 1 10 10
10 3 10 8 9 9 10 1 9 1 6 7 4 7 1 8 8 8 10 5 4 10 9 2 10 3 5 2 4 8 7 6 4 9 9 1 5
7 7 10 1 6 10 8 4 1 5 2 1 2 3 5 7 7 3 8 10 10 9 1 10 8 6 9 2 2 7 6 3 6 6 7 10 9
6 8 3 3 10 8 5 4 2 8 7 2 5 10 10 3 3 6 7 9 1 10 4 1 1 2 7 10 6 1 1 6 1 1 1 5 4 8
 5 6 1 9 4 1 9 8 5 8 8 8 10 7 1 4 3 2 9 7 9 9 7 10 3 9 8 6 7 2 6 9 5 8 2 7 8 2 3
 4 10 2 1 8 4 4 2 6 4 9 9 6 2 5 9 5 8 4 5 3 2 5 5 10 10 6 5 6 3 2 4 5 10 9 2 6 7
 7 1 2 6 2 4 8 3 5 1 2 2 1 8 2 4 6 3 6 7 4 3 3 8 5 3 3 5 4 10 6 4 2 8 5 9 9 10 4
 8 5 5 4 6 9 2 10 8 8 10 4 6 2 10 8 4 3 1 5 3 3 9 1 5 8 9 7 9 2 3 9 10 5 1 10 3
8 5 4 9 3 8 10 8 6 8 1 2 6 5 1 5 3 1 7 1 8 7 2 1 9 2 7 4 9 10 2 7 9 5 1 6 3 6 7
10 8 2 7 6 4 7 2 2 6 7 7 9 2 4 2 6 10 9 7 4 5 4 4 5 3 5 8 9 10 8 7 2 2 1 3 8 1 3
 7 4 10 1 8 5 4 4 1 3 5 7 2 5 9 5 7 10 8 9 5 6 10 4 3 2 9 7 7 9 5 3 9 10 7 1 5 2
 7 4 6 2 7 2 1 6 1 2 5 10 6 8 1 8 6 7 5 6 5 6 9 10 10 6 3 1 3 8 7 1 2 8 8 5 6 8
4 3 6 10 7 8 4 8 3 4 8 7 6 10 7 9 6 2 4 5 8 3 5 10 9 2 3 10 10 10 10 8 9 5 7 3 2
 9 5 3 5 7 3 1 1 6 4 8 8 1 2 4 9 5 3 3 2 1 5 3 4 5 7 8 10 3 8 3 9 7 5 2 1 1 3 8
4 6 4 9 10 2 8 3 6 5 4 10 6 1 4 9 9 10 1 4 7 9 8 10 5 3 5 5 4 6 9 5 6 2 1 6 9 10
 8 3 8 10 4 7 10 7 6 9 8 1 4 3 5 3 9 4 7 7 5 4 7 4 7 2 9 6 8 8 6 3 10 4 1 3 2 3
3 8 5 3 2 4 6 8 6 4 3 2 2 10 5 2 8 7 1 5 4 8 5 8 10 1 6 2 7 4 8 4 8 1 7 3 6 9 4
7 5 3 8 1 3 5 9 9 1 3 8 10 1 8 3 4 2 9 4 3 1 6 4 4 10 4 10 10 3 7 6 8 2 7 1 7 6
4 3 7 5 4 5 9 7 10 6 4 3 4 8 2 10 6 3 6 4 7 2 10 10 9 4 5 3 3 6 6 2 2 1 3 4 6 4
6 9 5 9 4 5 4 1 10 8 6 9 2 5 7 6 10 1 8 2 8 6 1 8 8 4 5 4 1 1 1 8 1 8 4 6 1 7 3
1 3 9 10 7 4 6 7 2 8 9 6 10 4 9 5 5 4 3 2 8 10 1 2 7 5 5 3 5 5 7 5 1 1 6 10 9 9
10 7 5 4 9 7 10 10 3 2 4 5 8 4 6 6 5 6 5 5 8 9 6 10 8 6 5 10 3 4 10 4 1 2 2 3 2
10 2 4 5 3 5 1 8 8 1 7 4 10 2 9 10 3 10 9 2 1 10 1 7 8 2 9 6 5 7 7 7 2 10 8 2 6
6 4 4 2 7 8 10 6 4 1 3 7 5 7 1 1 1 9 3 8 9 6 8 6 2 4 7 8 3 6 10 10 7 8 2 4 10 9
10 8 9 8 10 2 8 4 4 2 8 10 6 4 3 9 2 2 4 3 9 10 3 9 4 10 4 2 7 10 6 7 2 5 1 10 3
 10 6 2 9 2 8 8 9 6 2 2 3 10 6 6 3 8 1 8 7 8 10 7 3 4 5 2 7 6 10 1 1 2 9 6 9 7 7
 7 5 2 3 6 8 6 2 1 4 2 6 3 2 6 7 2 1 8 6 10 1 3 1 10 5 1 5 2 8 10 3 2 3 6 10 6 2
 7 7 7 10 8 2 2 2 3 9 5 7 9 5 10 5 1 10 7 10 7 4 4 5 7 9 1 9 4 10 8 5 8 7 10 5 8
 1 7 9 4 9 10 1 8 10 4 10 1 2 8 5 9 4 8 2 8 1 8 8
sorted:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
sort_type_1 的运行时间为: 0.002000 秒!


This fast sort type_2, improved one
original:8 8 6 1 5 6 3 1 2 9 6 10 9 2 10 10 9 6 4 9 9 1 5 7 8 10 4 1 10 1 8 1 7
1 1 1 4 8 3 2 4 2 9 3 6 10 8 4 6 5 9 10 7 5 7 9 3 5 4 2 6 1 7 1 10 2 5 10 5 5 9
3 3 4 8 5 2 3 4 5 2 8 4 5 5 8 4 1 10 8 8 5 9 5 9 2 5 7 7 6 3 6 1 2 7 10 7 2 3 6
9 6 8 9 9 1 2 4 10 3 6 1 9 5 8 10 7 9 6 4 2 8 1 7 9 7 8 6 7 7 8 3 5 3 9 6 10 10
3 4 6 2 1 10 9 7 9 1 1 3 4 10 9 5 7 5 1 2 3 8 2 6 4 5 10 9 4 4 10 3 1 6 7 9 1 7
10 8 5 8 3 1 1 1 1 2 1 10 3 2 9 6 4 1 6 6 2 2 5 3 9 4 10 8 8 9 3 5 7 6 9 8 10 6
1 5 9 8 2 4 2 3 7 1 6 5 8 4 6 10 4 5 3 2 6 4 10 7 8 6 2 6 1 4 10 3 1 10 7 6 1 9
1 4 9 1 1 1 8 1 7 6 9 2 9 9 6 6 8 10 3 5 10 9 8 9 6 4 4 8 7 4 1 1 9 2 3 7 7 7 1
1 1 7 6 8 6 2 1 2 7 9 8 2 5 2 3 6 10 8 2 7 1 1 1 4 4 3 7 8 4 1 6 9 10 2 5 7 2 2
6 6 10 4 9 4 1 6 2 1 4 7 2 9 2 1 9 7 4 3 4 4 7 6 6 1 2 8 4 9 5 3 5 7 6 10 10 1 3
 8 4 3 1 3 10 3 8 8 1 6 2 6 5 1 6 6 5 6 7 7 3 3 4 10 9 7 7 1 9 3 5 7 10 10 5 9 3
 8 7 9 8 6 4 2 3 1 1 10 9 3 6 3 2 5 9 1 9 4 9 6 6 6 5 8 2 2 6 8 10 2 6 5 3 8 10
10 5 4 8 1 4 6 2 5 8 10 10 1 1 4 9 9 1 2 8 6 10 3 3 4 3 8 10 7 2 2 5 5 5 4 6 6 4
 2 3 3 2 2 3 10 9 9 5 3 4 10 9 7 1 3 4 3 9 4 3 10 6 10 3 2 9 5 8 8 3 4 5 10 9 4
1 3 10 7 9 9 9 6 4 2 10 10 9 10 5 4 1 2 6 3 7 9 7 6 2 10 7 9 3 3 7 5 6 9 1 6 2 3
 9 1 1 3 10 2 7 9 4 4 9 8 4 2 7 3 7 9 6 5 6 2 7 6 2 1 4 1 3 2 10 8 7 3 6 4 9 5 8
 3 4 3 3 5 3 7 9 5 8 10 6 3 6 7 5 1 1 1 9 8 10 9 1 2 2 9 9 5 9 9 1 2 9 1 1 4 7 9
 6 8 3 3 9 3 6 9 10 9 5 9 3 6 8 10 2 8 8 9 3 4 4 7 8 2 2 5 5 2 3 2 10 1 5 4 3 5
3 6 6 6 6 6 7 6 9 5 2 8 5 2 9 2 9 1 1 9 8 1 6 6 8 10 7 8 6 7 6 9 4 6 6 1 3 8 10
2 4 4 7 5 2 10 7 4 4 7 7 1 1 8 9 3 6 9 4 2 2 8 7 8 9 1 4 9 3 6 7 4 5 9 1 8 6 10
1 9 1 9 2 1 2 4 10 10 4 7 8 7 8 4 3 5 10 1 4 6 8 5 2 1 6 4 8 9 6 4 3 1 4 7 3 10
6 7 1 6 3 4 3 3 1 3 6 8 8 10 1 6 1 8 5 2 1 7 2 6 8 1 10 7 2 10 8 3 1 4 8 3 1 10
1 5 1 2 4 7 8 2 9 1 1 8 9 7 9 8 8 10 6 7 5 10 7 5 3 8 2 6 6 4 8 9 4 10 9 10 6 1
5 8 4 7 6 7 10 8 6 2 1 3 10 5 4 3 9 10 5 2 6 9 8 8 6 4 4 9 8 3 2 8 9 2 9 1 5 10
10 8 8 5 7 6 2 6 9 9 8 6 6 8 7 2 2 10 2 1 6 9 8 1 4 5 2 5 2 6 5 9 4 7 9 1 10 10
10 3 10 8 9 9 10 1 9 1 6 7 4 7 1 8 8 8 10 5 4 10 9 2 10 3 5 2 4 8 7 6 4 9 9 1 5
7 7 10 1 6 10 8 4 1 5 2 1 2 3 5 7 7 3 8 10 10 9 1 10 8 6 9 2 2 7 6 3 6 6 7 10 9
6 8 3 3 10 8 5 4 2 8 7 2 5 10 10 3 3 6 7 9 1 10 4 1 1 2 7 10 6 1 1 6 1 1 1 5 4 8
 5 6 1 9 4 1 9 8 5 8 8 8 10 7 1 4 3 2 9 7 9 9 7 10 3 9 8 6 7 2 6 9 5 8 2 7 8 2 3
 4 10 2 1 8 4 4 2 6 4 9 9 6 2 5 9 5 8 4 5 3 2 5 5 10 10 6 5 6 3 2 4 5 10 9 2 6 7
 7 1 2 6 2 4 8 3 5 1 2 2 1 8 2 4 6 3 6 7 4 3 3 8 5 3 3 5 4 10 6 4 2 8 5 9 9 10 4
 8 5 5 4 6 9 2 10 8 8 10 4 6 2 10 8 4 3 1 5 3 3 9 1 5 8 9 7 9 2 3 9 10 5 1 10 3
8 5 4 9 3 8 10 8 6 8 1 2 6 5 1 5 3 1 7 1 8 7 2 1 9 2 7 4 9 10 2 7 9 5 1 6 3 6 7
10 8 2 7 6 4 7 2 2 6 7 7 9 2 4 2 6 10 9 7 4 5 4 4 5 3 5 8 9 10 8 7 2 2 1 3 8 1 3
 7 4 10 1 8 5 4 4 1 3 5 7 2 5 9 5 7 10 8 9 5 6 10 4 3 2 9 7 7 9 5 3 9 10 7 1 5 2
 7 4 6 2 7 2 1 6 1 2 5 10 6 8 1 8 6 7 5 6 5 6 9 10 10 6 3 1 3 8 7 1 2 8 8 5 6 8
4 3 6 10 7 8 4 8 3 4 8 7 6 10 7 9 6 2 4 5 8 3 5 10 9 2 3 10 10 10 10 8 9 5 7 3 2
 9 5 3 5 7 3 1 1 6 4 8 8 1 2 4 9 5 3 3 2 1 5 3 4 5 7 8 10 3 8 3 9 7 5 2 1 1 3 8
4 6 4 9 10 2 8 3 6 5 4 10 6 1 4 9 9 10 1 4 7 9 8 10 5 3 5 5 4 6 9 5 6 2 1 6 9 10
 8 3 8 10 4 7 10 7 6 9 8 1 4 3 5 3 9 4 7 7 5 4 7 4 7 2 9 6 8 8 6 3 10 4 1 3 2 3
3 8 5 3 2 4 6 8 6 4 3 2 2 10 5 2 8 7 1 5 4 8 5 8 10 1 6 2 7 4 8 4 8 1 7 3 6 9 4
7 5 3 8 1 3 5 9 9 1 3 8 10 1 8 3 4 2 9 4 3 1 6 4 4 10 4 10 10 3 7 6 8 2 7 1 7 6
4 3 7 5 4 5 9 7 10 6 4 3 4 8 2 10 6 3 6 4 7 2 10 10 9 4 5 3 3 6 6 2 2 1 3 4 6 4
6 9 5 9 4 5 4 1 10 8 6 9 2 5 7 6 10 1 8 2 8 6 1 8 8 4 5 4 1 1 1 8 1 8 4 6 1 7 3
1 3 9 10 7 4 6 7 2 8 9 6 10 4 9 5 5 4 3 2 8 10 1 2 7 5 5 3 5 5 7 5 1 1 6 10 9 9
10 7 5 4 9 7 10 10 3 2 4 5 8 4 6 6 5 6 5 5 8 9 6 10 8 6 5 10 3 4 10 4 1 2 2 3 2
10 2 4 5 3 5 1 8 8 1 7 4 10 2 9 10 3 10 9 2 1 10 1 7 8 2 9 6 5 7 7 7 2 10 8 2 6
6 4 4 2 7 8 10 6 4 1 3 7 5 7 1 1 1 9 3 8 9 6 8 6 2 4 7 8 3 6 10 10 7 8 2 4 10 9
10 8 9 8 10 2 8 4 4 2 8 10 6 4 3 9 2 2 4 3 9 10 3 9 4 10 4 2 7 10 6 7 2 5 1 10 3
 10 6 2 9 2 8 8 9 6 2 2 3 10 6 6 3 8 1 8 7 8 10 7 3 4 5 2 7 6 10 1 1 2 9 6 9 7 7
 7 5 2 3 6 8 6 2 1 4 2 6 3 2 6 7 2 1 8 6 10 1 3 1 10 5 1 5 2 8 10 3 2 3 6 10 6 2
 7 7 7 10 8 2 2 2 3 9 5 7 9 5 10 5 1 10 7 10 7 4 4 5 7 9 1 9 4 10 8 5 8 7 10 5 8
 1 7 9 4 9 10 1 8 10 4 10 1 2 8 5 9 4 8 2 8 1 8 8
sorted:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 9 9 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
sort_type_2 此程序的运行时间为: 0.000000 秒!

当len增加到10000时:

This fast sort type_1
sort_type_1 的运行时间为: 0.031000 秒!

This fast sort type_2, improved one
sort_type_2 此程序的运行时间为: 0.001000 秒!




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值