Minimum k number code (C)
Question: Enter n Integers to find the minimum k number.
UseQuick Sort)To solve the problemIndex)Number of forward k.
Code:
/** Main. cpp ** Created on: 2014.6.12 * Author: Spike * // * eclipse cdt, gcc 4.8.1 */# include
# Include
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 | start <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
Output:
1 2 3 4