求助

P1923 【深基9.例4】求第 k 小的数

用快速排序就可以 ```c #include<bits/stdc++.h> using namespace std ; int a[5000005] ; int main () { int n , k ; scanf("%d%d" , &n , &k) ; for (int i = 1 ; i <= n ; i ++) { scanf("%d" , &a[i]) ; } sort (a + 1 , a + n + 1) ; printf("%d" , a[k + 1]) ; return 0 ; } ``` @[禹天钧2016](/user/1178004)
by MichaelMao @ 2024-09-20 21:02:59


@[禹天钧2016](/user/1178004) 建议先学习一下如何分析时间复杂度
by Diaоsi @ 2024-09-20 21:03:22


@[禹天钧2016](/user/1178004) 问题如下: 1.数组开的过长,有报错的风险。 2.感觉排序有点问题,个人感觉应为:```c for (int i = 1 ; i <= n ; i ++) { for (int j = i + 1 ; j <= n ; j ++) { if (a[j] > a[i]) swap(a[j] , a[i]) ; } } ```
by MichaelMao @ 2024-09-20 21:15:26


|