分治法:快速排序求第K极值

标题其实就是nth_element函数的底层实现

nth_element(first, nth, last, compare)

求[first, last]这个区间中第n大小的元素

如果参数加入了compare函数,就按compare函数的方式比较

array[first, last)元素区间,排序后,array[nth]就是第n大的元素(从0开始)

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4  
 5 int main(){
 6     int array[] = {5,6,7,8,4,2,1,3,0};
 7     int len=sizeof(array)/sizeof(int);
 8     cout<<"排序前: ";
 9     for(int i=0; i<len; i++)
10         cout<<array[i]<<" ";
11     nth_element(array, array+6, array+len);  //排序第6个元素
12         cout<<endl;
13     cout<<"排序后:"; 
14     for(int i=0; i<len; i++)
15         cout<<array[i]<<" ";
16         
17     cout<<endl<<"第6个元素为"<<array[6]<<endl; 
18 }

 

posted @ 2018-09-13 22:27  静听风吟。  阅读(338)  评论(0编辑  收藏  举报