个人发明的代数排序法,比快排快。

// 排序.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#define _AFXDLL
#include 
#include 
#include 
#include 
#include 
using namespace std;
int total_c=0;
#define buf_length 30000000
int an[buf_length];
int bn[buf_length];
#define all_count 1000
struct data 
{
	int last;
	int value;
};
struct buf 
{
	int lasts[all_count];
	data d[buf_length];
	int cc[all_count];
	int all_c;
	inline void reset(int val,int allc)
	{
		all_c=0;
		for (int i=0;imax)
			max=a[i];
		if(a[i]all_c-1?all_c-1:z;
		z=z<0?0:z;
		buffer.push(z,a[i]);
	}
	int p=start;
	for (int i=0;i1)
				sort(a,start,zm[0]);
		}
		else
		{
			if(zm[i]-zm[i-1]1)
				sort(a,zm[i-1],zm[i]);
		}
	}
	delete zm;
};
int total_b=0;
inline int cmp ( const void *a , const void *b )
{
	return *(int *)a - *(int *)b;
}

int _tmain(int argc, _TCHAR* argv[])
{
	srand(time(0));
	int zz=buf_length;
	cout<<"数据个数:"<
以上是源码,比较c语言自带的快排函数。
下面是连续测试结果:
数据个数:30000000
QsTime:16162
Mytime:7098

结果一致
数据个数:3000000
QsTime:1685
Mytime:749

结果一致
数据个数:300000
QsTime:156
Mytime:109

结果一致


你可能感兴趣的:(个人发明的代数排序法,比快排快。)