快速排序
蓝桥杯历年省赛真题汇总及题目详解 2018年第九届蓝桥杯省赛试题详解 标题:快速排序。 以下代码可以从数组a[]中找出第k小的元素。 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。 请仔细阅读分析源码,填写划线部分缺失的 # include <stdio.h> int quick_select ( int a [ ] , int l , int r , int k ) { int p = rand ( ) % ( r - l + 1 ) + l ; int x = a [ p ] ; { int t = a [ p ] ; a [ p ] = a [ r ] ; a [ r ] = t ; } int i = l , j = r ; while ( i < j ) { while ( i < j && a [ i ] < x ) i ++ ; if ( i < j ) { a [ j ] = a [ i ] ; j -- ; } while ( i < j && a [ j ] > x ) j -- ; if ( i < j ) { a [ i ] = a [ j ] ; i ++ ; } } a [ i ] = x ; p = i ; if ( i - l + 1 == k ) return a [ i ] ; if ( i - l + 1 < k )