实现数组获取前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); }
相关文章推荐
- 从无序数组中获取最小的M个元素(小顶堆实现)
- 从无序数组中获取最小的M个元素(小顶堆实现)
- 获取数组总最小\最大值
- PHP里获取一维数组里的最大值和最小值
- JAVA实现旋转数组的最小数字问题(《剑指offer》)
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- C#获取一个数组中的最大值、最小值、平均值
- 同时获取数组中的最大值和最小值
- 获取数组中最大值和最小值(使用apply或扩展语句 spred operator)
- 数组与集合的应用之数组演练(获取一维数组最小值)
- 剑指offer刷题之java实现的把数组排成最小的数
- 定义一个二维int数组,编写代码获取最小元素
- 6.5 旋转数组的最小数字(二分法:python,java实现)
- 找出数组中的最小值--递归实现
- C++使用两个栈实现一个可以获取栈中最大值和最小值的栈
- js获取数组中最小的值的方法 Math.min.apply(),apply(),call()方法使用
- Javascript获取数组中的最大值和最小值的方法汇总
- 获取数组中最大最小值方法
- oc 实现子数组和绝对值差最小
- c#读取数组中获取最大最小值方法