STL中的nth_element()方法的使用详解编程语言

STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end)
方法可以使第n大元素处于第n位置(从0开始,其位置是下标为
n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,下面是这个方法的具体使用方法.

 1 #include <iostream> 
 2  
 3 #include <algorithm> 
 4  
 5 #include <functional> 
 6  
 7 #include <vector> 
 8  
 9 using namespace std; 
10  
11  
12  
13 int main() 
14  
15 { 
16  
17     const int VECTOR_SIZE = 50 ; 
18  
19  
20  
21     vector<int> Numbers(VECTOR_SIZE) ; 
22  
23  
24  
25     vector<int>::iterator start, end, it ; 
26  
27  
28  
29     // Initialize vector Numbers 
30  
31     for(int i=0;i<50;++i){ 
32  
33              Numbers[i]=i; 
34  
35     } 
36  
37 /*由于赋值时是有序的,下面random_shuffle()方法将这些数据的顺序打乱*/ 
38  
39     random_shuffle(Numbers.begin(),Numbers.end()); 
40  
41      
42  
43 // location of first element of Numbers 
44  
45     start = Numbers.begin() ;  
46  
47  
48  
49  // one past the location last element of Numbers 
50  
51     end = Numbers.end() ;      
52  
53  
54  
55     cout << "Before calling nth_element/n" << endl ; 
56  
57  
58  
59   // print content of Numbers 
60  
61     cout << "Numbers { " ; 
62  
63     for(it = start; it != end; it++) 
64  
65         cout << *it << " " ; 
66  
67     cout << " }/n" << endl ; 
68  
69  
70  
71   /*  
72  
73     * partition the elements by the 8th element, 
74  
75   *(notice that 0th is the first element) 
76  
77   */  
78  
79     nth_element(start, start+8, end) ; 
80  
81  
82  
83     cout << "After calling nth_element/n" << endl ; 
84  
85  
86  
87     cout << "Numbers { " ; 
88  
89     for(it = start; it != end; it++) 
90  
91         cout << *it << " " ; 
92  
93     cout << " }/n" << endl ; 
94  
95     system("pause"); 
96  
97 }

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11860.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论