#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);
}
實現數組獲取前K個最小數
採用快速排序算法變形實現數組前K個最小數算法的實現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.