zoukankan      html  css  js  c++  java
  • 选出数组中指定小的元素

    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;

    int random(int a,int b)
    {
    srand(NULL);
    return rand()%(b-a)+a;
    }

    void exchange(int &a,int &b)
    {
    int temp;
    temp=a;
    a=b;
    b=temp;
    }

    int partition(int *a,int p,int r)
    {
    int x=a[r];
    int i=p-1;
    for (int j=p;j<r;j++)
    {
    if (a[j]<=x)
    {
    i=i+1;
    exchange(a[i],a[j]);
    }
    }
    exchange(a[i+1],a[r]);
    return i+1;
    }

    int randomized_partition(int *a,int p,int r)
    {
    int i=random(p,r);
    exchange(a[r],a[i]);
    return partition(a,p,r);
    }

    int randomized_select(int *a,int p,int r,int i) //选出数组a[p...r]中倒数第i个小的元素
    {
    if (p==r)
    return a[p];
    int q=randomized_partition(a,p,r);
    int k=q-p+1;
    if (i==k)
    return a[q];
    else if(i<k)
    return randomized_select(a,p,q-1,i);
    else
    return randomized_select(a,q+1,r,i-k);
    }

    int main()
    {
    int a[]={4,1,3,2,16,30,0,7,5,8,98,34};
    int length=sizeof(a)/sizeof(int)-1;
    cout<<randomized_select(a,0,length,9)<<endl;
    system("pause");
    return 0;
    }
  • 相关阅读:
    Node 基本配置
    python GIL锁
    大数据 Zookeeper 集群
    大数据 Hadoop HA
    python 内置方法使用
    Linux Curl使用
    Linux 文件解压缩
    大数据 Hadoop 常见端口
    大数据 Hadoop 集群安装
    css结构设计思想
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2359390.html
Copyright © 2011-2022 走看看