Title: Enter n integers to find the minimum number of K.
Use the quick Sort method to solve the index value to point to the top K number.
Code:
* * * main.cpp * * Created on:2014.6.12 * author:spike//*eclipse CDT, gcc 4.8.1*/#incl Ude <stdio.h> #include <stdlib.h> int randominrange (int min, int max) {int random = rand ()%
(max-min+1) + min;
return random;
} void Swap (int* num1, int* num2) {int temp = *NUM1;
*NUM1 = *num2;
*num2 = temp; int Partition (int data[], int length, int start, int end) {if (data = NULL | | length <= 0 | | Lt 0 | |
End >= length) return-1;
int index = Randominrange (start, end);
Swap (&data[index], &data[end]);
int small = start-1;
for (index = start, index < end; ++index) {if (Data[index] < Data[end]) {small++;
if (small!= index) Swap (&data[small], &data[index]);
}} small++;
Swap (&data[small], &data[end]); Return smalL } void Getleastnumbers (int* input, int n, int* output, int k) {if (input = = NULL | | n <= 0 | | output = = NULL | | K <= 0 | |
K>n) return;
int start = 0;
int end = N-1;
int index = Partition (input, n, start, end);
while (index!= k-1) {if (Index > k-1) {end = Index-1;
index = Partition (input, n, start, end);
else {start = index + 1;
index = Partition (input, n, start, end);
for (int i=0; i<k; ++i) {output[i] = Input[i];
int main (void) {int input[] = {4, 5, 1, 6, 2, 7, 3, 8};
int output[4];
Getleastnumbers (input, 8, output, 4);
for (int i=0; i<4; ++i) {printf ("%d", output[i]);
printf ("\ n");
return 0; }
Output:
1 2 3 4
Back to the column page: http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/