今天想到了一种改进的快速排序,不知道之前有没有人想到过
同样是快速排序,稍微一点改进可能带来运算效率的质变
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 秒!