您的位置:首页 > 其它

实现数组获取前K个最小数

2014-03-24 21:17 78 查看
采用快速排序算法变形实现数组前K个最小数算法的实现。
#include<stdio.h>
#include<stdlib.h>

//#define swap(a,b)  {a=a^b;b=a^b;a=a^b;}
void swap(int *a,int *b)
{
//*a=*a^*b;
//*b=*a^*b;
//*a=*a^*b;
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int partion(int a[],int p,int r)
{
int key,i,j;
key=a[r];
j=p-1;
for(i=p;i<r;i++)
{
if(a[i]<key)
{
j++;
swap(&a[i],&a[j]);
}
}
j++;
swap(&a[j],&a[r]);
return j;
}

void K_Front(int a[],int k,int p,int r)
{
int mid;
if(a==NULL)
return;
mid=partion(a,p,r);
if(mid+1==k)
return;
else if(mid+1<k)
K_Front(a,k,mid+1,r);
else if(mid+1>k)
K_Front(a,k,p,mid-1);
}

void main()
{
int a[]={3,8,7,6,4,2,1,9,5};
K_Front(a,4,0,8);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: