输入多个数以求第k大的数

以下是使用C语言实现的完整代码:

#include <stdio.h>

int main() {
    int a[10000];
    int n, temp, i, k, j;
    printf("请输入你要输入的数的个数n:\n");
    scanf("%d", &n);
    
    for(i = 0; i < n; i++) {
        printf("a[%d]=", i);
        scanf("%d", &a[i]);
    }
    
    // 冒泡排序,按升序排列
    for(i = 0; i < n; i++) {
        for(j = i + 1; j < n; j++) {
            if(a[j] < a[i]) {
                temp = a[j];
                a[j] = a[i];
                a[i] = temp;
            }
        }
    }
    
    printf("请输入你要的到第几小/大的数K:\n");
    scanf("%d", &k);
    
    printf("第%d大的数为%d\n", k, a[k-1]);
    printf("第%d小的数为%d\n", k, a[n-k]);
    
    return 0;
}
    

C语言函数:找出数组中k个数的最大值

注意:代码中不应使用头文件#include <stdio.h>或#include <math.h>,并且外部函数定义需避免重复覆盖问题。

输入多个数以求第k大的数,C语言选择法排序:输入n个整数并按升序输出

C语言选择法排序:输入n个整数并按升序输出

代码如下:

//#include "stdafx.h" // vc++6.0加上这一行.
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n, x[20], i, j, k;
    
    while(1) {
        printf("Input n (int n <= 20)...\n");
        if(scanf("%d", &n), n == 0) break;
        
        for(i = 0; i < n; scanf("%d", x + i++));
        
        printf("\nAfter sorting as follows:\n");
        for(i = 0; i < n; i++) {
            for(k = i, j = k + 1; j < n; j++)
                if(x[k] > x[j]) k = j;
            if(k != i) {
                int temp = x[k];
                x[k] = x[i];
                x[i] = temp;
            }
            printf(i < n - 1 ? "%d " : "%d\n", x[i]);
        }
    }
    
    return 0;
}