现在的位置: 首页 > 综合 > 正文

hdu 1245 sort

2018年01月12日 ⁄ 综合 ⁄ 共 593字 ⁄ 字号 评论关闭

背景:与上一个1280相关,水过。练习写快排速度

学习

#include<stdio.h>
void quicksort( int str[],int n);
  void quicksort( int str[],int n)
  {
  	int p1=0,p2=n-1;
  	int key=str[p1];
  	if(p1<p2)
  	{
  		while(p1<p2)
  		{
  			for(;p1<p2;--p2)
  			{
  				if(str[p2]>key)
  				{
  					str[p1++]=str[p2];
  					break;
  				}
  			}
  			for(;p1<p2;++p1)
  			{
  				if(str[p1]<key)
  				{
  					str[p2--]=str[p1];
  					break;
  				}
  			}
  		}
  		str[p1]=key;
  		quicksort(str,p1);
  	    quicksort(str+p1+1,n-p1-1);
  	}
  	
  }
int str[1000001];
int main(void)
{
	int n,m;
	while(scanf("%d %d",&n,&m)==2)
	{
		
			for(int i=0;i<n;++i)
			{
			scanf("%d",&str[i]);
		    }
		    quicksort(str,n);
		    int k=1;
		    for(int l=0;l<=m-1;++l)
		    {
		    	if(k)
		    	{
		    		printf("%d",str[l]);
		    		--k;
		    	}
		    	else
				{
					printf(" %d",str[l]);
		    	}
		    }
		    printf("\n");
		    
		
	}
} 

1.快排的时候有一个易错点就是对每一个回合忘了把key安放回去。

抱歉!评论已关闭.