《编程之美》中寻找最大的K个数的一般解法,这是和快速排序相结合的解法
2014-03-06 11:53
323 查看
#include<stdio.h> int partition(float A[],int l,int h) { float temp=A[l]; int i=l; int j=h; while(i<j) { while(i<j && temp<=A[j]) { j--; } if(i<j && temp>A[j])A[i]=A[j]; while(i<j && temp>=A[i]) { i++; } if(i<j && temp<A[i])A[j]=A[i]; } A[i]=temp; return i; } void kBig(float A[],int l,int h,int K) { int pos=partition(A,l,h); if(K==0)return; if(h-pos>K)kBig(A,pos+1,h,K); else kBig(A,l,pos,K-h+pos); } int main() { float A[]={1.5,1.5,2.5,3.5,3.5,5,0,-1.5,3.5}; //int loc=partition(A,0,1); int i; kBig(A,0,8,3); for(i=8;i>5;i--) printf("%.2f\n",A[i]); return 0; }
相关文章推荐
- 《编程之美》求两个大整数的最大公约数问题的一般解法
- js同时寻找数组中最大值和最小值,编程之美解法三
- 编程之美2.10 寻找数组中的最大值和最小值
- 编程之美:寻找最大的K个数
- 《编程之美: 求二叉树中节点的最大距离》的另一个解法
- 编程之美2.5:寻找最大的K个数
- 编程之美2.10寻找数组中的最大值和最小值代码
- 《编程之美: 求二叉树中节点的最大距离》的另一个解法
- 《编程之美》最大公约数问题之循环解法
- 算法->编程之美2.5 寻找最大的K个数
- 编程之美:第二章 数字之魅 2.5寻找最大的k个数
- 寻找数组中的最小值和最大值——编程之美2.10
- 编程之美—寻找最大的k个数
- 编程之美《寻找数组中的最大最小值》
- 《编程之美: 求二叉树中节点的最大距离》的另一个解法
- 《编程之美》读书笔记07: 2.5 寻找最大的K个数
- 编程之美2.5 寻找最大的K个数
- 《编程之美》2.7 最大公约数问题解法3改进
- 编程之美——寻找最大的K个数(最小堆实现)
- 编程之美2.5寻找最大的K个数