题解 | #最小的K个数#
最小的K个数
http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param input int整型一维数组
* @param inputLen int input数组长度
* @param k int整型
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int partition(int* input, int low, int high){
int p = input[low];
while(low < high){
while(low < high && input[high] >= p) high--;
input[low] = input[high];
while(low < high && input[low] < p) low++;
input[high] = input[low];
}
input[low] = p;
return low;
}
void quicksort(int* input, int low, int high){
if(low < high){
int p = partition(input, low, high);
quicksort(input, low, p-1);
quicksort(input, p+1, high);
}
}
int* GetLeastNumbers_Solution(int* input, int inputLen, int k, int* returnSize ) {
// write code here
int* res = (int*) malloc(sizeof(int)*k);
*returnSize = k;
quicksort(input,0,inputLen-1);
for(int i = 0; i < k; i++){
res[i] = input[i];
}
return res;
}