zoukankan      html  css  js  c++  java
  • 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<stdio.h>
    #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
    ",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
    ",a[right-1],middle);
    	return a[right-1];
    }
    
    void InsertionSort(int a[],int left ,int right)
    {
    	int i,j,temp;
    	for(i=left;i<right;i++)
    	{
    		temp=a[i+1];
    		for(j=i+1;j>left;j--)
    		{
    			if(temp<a[j-1])
    				a[j]=a[j-1];
    			else break;
    		}
    		a[j]=temp;
    	}
    }
    void quicksort(int a[],int left,int right)
    {
    	int low,high,pivot;
    	low=left;
    	high=right-1;
    	if(right-left<=CUTOFF)
    	{
    		InsertionSort(a,left,right);
    		return;
    	}
    	
    	pivot=median3(a,left,right);
    	while(1)
    	{
    		while(a[++low]<pivot);
    		while(a[--high]>pivot);
    		if(low<high)
    			swap(&a[low],&a[high]);
    		else break;
    	}
    	swap(&a[low],&a[right-1]);
    	quicksort(a,left,low-1);
    	quicksort(a,low+1,right);
    }
    
    int main()
    {
    	int i,N;
    	scanf("%d",&N);
    	for(i=0;i<N;i++)
    	{
    		scanf("%d",&T[i]);
    	}
    	quicksort(T,0,N-1);
    
    	for(i=0;i<N;i++)
    	{
    		printf("%d",T[i]);
    		if(i!=N-1)
    		printf(" ");
    	}
    }
    

      

  • 相关阅读:
    欢迎访问我的快站clone-5483e9466f404.kuaizhan.com
    SWFUpload 2.5.0版 官方说明文档 中文翻译版
    http://demo.jb51.net/js/2011/artDialog/_doc/iframeTop.html
    使用jquery-qrcode生成二维码
    主流浏览器CSS3和HTML5兼容性详细清单
    js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop。
    document.documentElement和document.body的区别
    CSS 的优先级机制
    css三列布局之双飞翼pk圣杯
    响应式web设计(一)
  • 原文地址:https://www.cnblogs.com/gk2017/p/7141122.html
Copyright © 2011-2022 走看看