PTA 09-排序1 排序 (25分)

题目地址

https://pta.patest.cn/pta/test/15/exam/4/question/720

 

5-12 排序   (25分)

给定NN个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

 

  • 数据1:只有1个元素;

     

     

  • 数据2:11个不相同的整数,测试基本正确性;

     

     

  • 数据3:103个随机整数;

     

     

  • 数据4:104个随机整数;

     

     

  • 数据5:105个随机整数;

     

     

  • 数据6:105个顺序整数;

     

     

  • 数据7:105个逆序整数;

     

     

  • 数据8:105个基本有序的整数;

     

     

  • 数据9:105个随机正整数,每个数字不超过1000。

     

    输入格式:

    输入第一行给出正整数NN(\le 10^5105​​),随后一行给出NN个(长整型范围内的)整数,其间以空格分隔。

    输出格式:

    在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

    输入样例:

    11
    4 981 10 -17 0 -20 29 50 8 43 -5
    

    输出样例:

    -20 -17 -5 0 4 8 10 29 43 50 981

 

这个题是帮你计时用的。。

 

/*
给定NN个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

数据1:只有1个元素;
数据2:11个不相同的整数,测试基本正确性;
数据3:103个随机整数;
数据4:104个随机整数;
数据5:105个随机整数;
数据6:105个顺序整数;
数据7:105个逆序整数;
数据8:105个基本有序的整数;
数据9:105个随机正整数,每个数字不超过1000。


此题本身是用来比较排序算法速度用的,不过用快排综合水平挺快的。

写完算了

快排的结果
时间	结果	得分	题目	编译器	用时(ms)	内存(MB)	用户
2017-07-05 21:16	答案正确	25	5-12	gcc	52	2	
测试点结果
测试点	结果	得分/满分	用时(ms)	内存(MB)
测试点1	答案正确	1/1	1	1
测试点2	答案正确	10/10	2	1
测试点3	答案正确	2/2	2	1
测试点4	答案正确	2/2	7	1
测试点5	答案正确	2/2	49	2
测试点6	答案正确	2/2	52	2
测试点7	答案正确	2/2	47	2
测试点8	答案正确	2/2	41	2
测试点9	答案正确	2/2	47	1

另,快排把cutoff从3改为100后,速度稍微快了一些
评测结果
时间	结果	得分	题目	编译器	用时(ms)	内存(MB)	用户
2017-07-05 21:20	答案正确	25	5-12	gcc	48	2	
测试点结果
测试点	结果	得分/满分	用时(ms)	内存(MB)
测试点1	答案正确	1/1	2	1
测试点2	答案正确	10/10	2	1
测试点3	答案正确	2/2	2	1
测试点4	答案正确	2/2	8	1
测试点5	答案正确	2/2	48	2
测试点6	答案正确	2/2	39	2
测试点7	答案正确	2/2	41	2
测试点8	答案正确	2/2	42	2
测试点9	答案正确	2/2	44	1

插排的结果
评测结果
时间	结果	得分	题目	编译器	用时(ms)	内存(MB)	用户
2017-07-05 21:19	答案正确	25	5-12	gcc	7915	2	
测试点结果
测试点	结果	得分/满分	用时(ms)	内存(MB)
测试点1	答案正确	1/1	2	1
测试点2	答案正确	10/10	2	1
测试点3	答案正确	2/2	2	1
测试点4	答案正确	2/2	26	1
测试点5	答案正确	2/2	3495	2
测试点6	答案正确	2/2	40	2
测试点7	答案正确	2/2	7915	2
测试点8	答案正确	2/2	63	2
测试点9	答案正确	2/2	3587	1
*/

#include
#define CUTOFF 100
int T[100000];
void swap(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}

int median3(int a[],int left,int right)
{
//	printf("median3 got %d as left,%d as right\n",left,right);
	int middle=(left+right)/2;
	if(a[left]>a[right])
		swap(&a[left],&a[right]);
	if(a[left]>a[middle])
		swap(&a[left],&a[middle]);
	if(a[middle]>a[right])
		swap(&a[middle],&a[right]);

	swap(&a[middle],&a[right-1]);
//	printf("median3 got %d as a pivot,middle=%d\n",a[right-1],middle);
	return a[right-1];
}

void InsertionSort(int a[],int left ,int right)
{
	int i,j,temp;
	for(i=left;ileft;j--)
		{
			if(temppivot);
		if(low

 

  

 

转载于:https://www.cnblogs.com/gk2017/p/7141122.html

你可能感兴趣的:(PTA 09-排序1 排序 (25分))