1.二叉查找算法
2.查找最大最小值
3.归并排序
4.快速排序
6.大整数乘法
2.查找最大最小值
3.归并排序
4.快速排序
5.选择第k小元素
//分治法求第K小的数
#include <iostream>
#include <cstdlib>
using namespace std;
int FindSmall(int *a , int l , int r , int k){
if(l == r)
return a[l] ;
int i = l , j = r , x = a[(l+r)>>1] ;
while(i<=j) {
while(a[i] < x) ++ i ;
while(a[j] > x) -- j ;
if(i <= j){
swap( a[i], a[j] ) ;
++i ; --j ;
}
}
if(k <= j)
return FindSmall(a , l , j , k);
if(k >= i)
return FindSmall(a , i , r , k);
}
int main(){
int a[9] = { 1, 2, 6, 5, 4, 3, 7, 8, 9 };
cout<<FindSmall( a, 0, 8, 5 )<<endl;
system( "pause" );
}
6.大整数乘法