快速排序 487-3279 poj1002

这一题应该是考察快速排序问题,题意是输入若干字符,需要对这些字符进行转换成对应的数字,需要注意的是Q和Z没有对应的数字,最后需要将重复次数大于1的号码排序输出。如果没有重复的也要输出No duplicates.

#include "stdio.h"
#include "string.h"
#define max 100000
long num[max];
long convent(char s[])
{
	long i,l,sum=0;
	int k=0;
	l=strlen(s);
	for(i=0;k<7;i++)
	{
		if(s[i]>='0'&&s[i]<='9')
			{sum=sum*10+(s[i]-'0');k++;}
		else if(s[i]>='A'&&s[i]<='Z')
			{sum=sum*10+((s[i]-'A'-(s[i]>'Q'))/3+2);k++;}
	}
	return sum;
}
void sort(int left,int right)
{
	int i=left,j=right;
	long mid=num[(left+right)/2];
	while(i<=j)
	{
		while(num[i]mid) j--;
		if(i<=j){
			long tem=num[i];
			num[i]=num[j];num[j]=tem;
			i++,j--;
		}
	}
	if(i1&&num[i]!=num[i+1])
    	{
    		printf("%03d-%04d %ld\n",num[i]/10000,num[i]%10000,k);
    		k=1;flag=0;
   		}
    	else if(num[i]==num[i+1]) k++;
    }
    if(flag) printf("No duplicates.\n");
    return 0;
}


你可能感兴趣的:(算法学习)