经典算法5:用分治法实现元素选择

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

用分治法实现元素选择所用函数:

在该程序中总共用了六个函数:
    1、两个数的交换函数swap( );
    2、对一个数组进行划分函数partition(int a[],int p,int r,int x);
    3、快速排序函数 void quicksort(int a[],int p,int r);
    4、选择第k小数的函数int select(int a[],int p,int r,int k);
    5、数组生成函数 void create_array( );
    6、开始选择函数 void begin_select( );

一、交换函数swap( )
void __fastcall TForm1:: swap(int &a,int &b)
{                                        //交换两个整数a和b
int temp=a;
a=b;
b=temp;
}

二、划分函数partition(int a[],int p,int r,int x)

int __fastcall TForm1::partition(int a[],int p,int r,int x)
{ int i=p;        //把一个数组下标从p到r之间的数以x为基准       
           int j=r+1;      //划分为两个部分
        while(true)
{
           while(a[++i]<x);
           while(a[--j]>x);
           if(i>=j) break;        //
           swap( a[i], a[j]);    //调用交换函数来交换a[i]和a[j]
        }

        a[p]=a[j];

a[j]=x;

return j;

}

标签: swap

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:贪心Prim算法生成树问题C实现代码

下一篇:Android自定义圆角ImageView