辣椒不要辣


私信TA

用户名:inn12138

访问量:7304

签 名:

等  级
排  名 3200
经  验 2002
参赛次数 0
文章发表 13
年  龄 0
在职情况 学生
学  校 广西师范大学
专  业

  自我简介:

解题思路:

    本来想用快速排序法的,可是时间超时了,有大佬解释一下吗?

注意事项:

参考代码:

#include <stdio.h>

#include <string.h>

int a[10001];

int n;

void change(int *p,int *q)//交换两个数 

{

 int buff;

 buff = *p;

 *p = *q;

 *q = buff; 

} 

int sushu(int a)//判断素数 

{

 int i;

 if(a < 2)

  return 0;

 if(a == 2)

  return 1;

 for(i = 2; i*i < a; i++)

 {

  if(a % i == 0)

   return 0;

 }

 return 1;

}

void qucksort(int left,int right)//快速排序 

{

 int i,j,temp;

 i = left;

 j = right;

 temp = a[left];

 if(left > right)

  return;

 while(i != j)

 {

  //先从右到左找,找小于基准值的 

  while(a[j] > temp && i < j)

   j--;

  while(a[i] < temp && i < j)

   i++;

  if(i < j)

   change(&a[i],&a[j]);

 }

 change(&temp,&a[i]);

 qucksort(left,i-1);

 qucksort(i+1,right); 

}

void paixu()//冒泡排序 

{

 int i,j;

 for(i = 0; i < n-1; i++)

  for(j = 0; j < n - i -1; j++)

  {

   if(a[j] > a[j+1])

    change(&a[j],&a[j+1]);

  }

}

int main()

{

 int i,k,shu;

 memset(a,0,sizeof(a));

 while(scanf("%d%d",&n,&k) == 2)

 {

  for(i = 0; i < n; i++)

  scanf("%d",&a[i]);

  paixu();

  //qucksort(0,n-1);

  shu = a[n-k] - a[k-1];

  if(sushu(shu))

   printf("YES\n"); 

  else

   printf("NO\n");

  printf("%d\n",shu);

 }

 return 0;

 }


 

0.0分

0 人评分

  评论区

  • «
  • »