资源简介
输入若干组长度各异的待排序列,分别用快速排序算法和改进的枢轴元素三者取中算法对待排序列进行排序,当待排子序列长度已小于 20时,改用直接插入排序,利用时间函数验证三者取中算法在效率上的提高。(提示: 待排序列的长度一般应为 10000 以上)
代码片段和文件信息
#include
#include
#include
#define SIZE 100000
#define MAX 32768
using namespace std;
typedef struct element{
long long key;
}Element;
long long Random(long long seed)
{
return (25173*seed+13849)%32768;
}
typedef struct BROCK{
Element elem[SIZE+5];
long long length;
}brock;
void insertsort(brock*L long long lowlong long high);
void quicksort1(brock*L long long lowlong long high);
long long partition1(brock*L long long lowlong long high);
void quicksort2(brock*L long long lowlong long high);
long long partition2(brock*L long long lowlong long high);
int main()
{
long long in;
brock array_1array_2;
clock_t start finish;
double duration;
array_1.length=SIZE;
array_2.length=SIZE;
srand(time(NULL));
for(i=1; i<=SIZE; i++)
array_1.elem[i].key=array_2.elem[i].key=Random(rand());
start=clock();
quicksort1(&array_11SIZE);
finish=clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout<<“普通快排时间“<
start=clock();
quicksort2(&array_21SIZE);
finish=clock();
duration=(double)(finish - start) / CLOCKS_PER_SEC;
cout<<“三者取中时间“< system(“pause“);
}
void insertsort(brock*L long long lowlong long high)
{
long long ij;
for(i=low+1;i<=high;i++){
if(L->elem[i].keyelem[i-1].key){
L->elem[0]=L->elem[i];
L->elem[i]=L->elem[i-1];
for (j=i-2;L->elem[0].keyelem[j].key;j--)
L->elem[j+1]=L->elem[j];
L->elem[j+1]=L->elem[0] ;
}
}
}
long long partition1(brock*L long long lowlong long high)
{
long long pivotkey;
pivotkey=L->elem[low].key;
while(low
- 上一篇:OpenGL+MFC+点云
- 下一篇:C++矩阵计算类
评论
共有 条评论