Un-sorted list, find the "k" largest value, the original list can be changed
2017-01-20 11:59
507 查看
http://blog.csdn.net/hackbuteer1/article/details/6666564
#include int find_k_largest_number(int *arr, int size, int k) { int pivot = arr[0], i=0, j=size-1, m; if (k > size) return -1; // not found #if 0 printf("before sort, size = %d, k = %d\n", size, k); for(m=0; m= pivot) { j--; } else { break; } } if (i != j) { arr[i] = arr[j]; i++; } while (i (k-1)) { return find_k_largest_number(arr, i, k); } else { return find_k_largest_number(arr+i+1, size - i -1, k-i-1); } } #define ARRAY_SIZE (10) int main() { int a[ARRAY_SIZE] = {3,5,10,1,2,6,8,4,7,9}; int k_value; printf("find-k-largest-number begin\n"); k_value = find_k_largest_number(a, ARRAY_SIZE, 9); printf("%d-largest-number is %d\n", 9, k_value); k_value = find_k_largest_number(a, ARRAY_SIZE, 1); printf("%d-largest-number is %d\n", 1, k_value); k_value = find_k_largest_number(a, ARRAY_SIZE, 2); printf("%d-largest-number is %d\n", 2, k_value); k_value = find_k_largest_number(a, ARRAY_SIZE, 3); printf("%d-largest-number is %d\n", 3, k_value); k_value = find_k_largest_number(a, ARRAY_SIZE, 20); printf("%d-largest-number is %d\n", 20, k_value); printf("find-k-largest-number end\n"); return 0; }
相关文章推荐
- The difference between "can" and "be able to"
- 解决方案:Can not find the tag library descriptor for "http://java.sun.com/j...
- jslt Can not find the tag library descriptor for "http://java.sun.com/j...
- Can the msgbox vbYesNo button captions be changed in VBA?
- Can the msgbox vbYesNo button captions be changed in VBA?
- Only one expression can be specified in the select list when the subquery is not introduced with(求助)
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- CvMat执行CvReshape()报错“The matrix is not continuous, thus its number of rows can not be changed”
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- vs2005部署错误解决方法:ASPNETMERGE : error 1013: Cannot find any assemblies that can be merged in the application bin folder.
- "An extender can't be in a different UpdatePanel than the control it extends." error really needs debugging information ,错误
- the value of static variable can be changed after it's assigned
- Can not find the tag library descriptor for "/struts-tags"问题
- MyEclipse中消除frame引起的“the file XXX can not be found."的提示
- The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List
- Only one expression can be specified in the select list when the subquery is not introduced with EXI
- The only thing I can think of is to use something like "http://www.dyndns.org/cgi-bin/check_ip.cgi" others may have a be
- Can not find the tag library descriptor for "http://java.sun.com/j...
- given two unordered list find the greatest common integer