zoukankan      html  css  js  c++  java
  • 【基础算法】快速排序+二分搜索

    #include <iostream>
    using namespace std;

    //元素交换函数

    void lvSwap(int *apiArray, int index1, int index2)
    {
       int temp = apiArray[index1];
       apiArray[index1] = apiArray[index2];
       apiArray[index2] = temp;
    }

    //快速排序

    void lvQuickSort(int *apiArray, int arraySize)
    {
       int liLast=0;  
       int i;
       if(arraySize > 1){
          lvSwap(apiArray,0,rand()%arraySize);    //随机挑选数组内的一个数作为基准元素
          for(i = 1; i<arraySize;i++){
             if(apiArray[0] > apiArray[i]){
                liLast++;                             
                lvSwap(apiArray,i,liLast);    //将基准元素交换到数组内部,将数组分为两部分
             }
          }
          lvSwap(apiArray, 0, liLast);
          lvQuickSort(apiArray, liLast);
          lvQuickSort(apiArray+liLast, arraySize-liLast-1);     //对后半部分进行排序,必须多减1,要不就陷入死循环  
       }
       return ;
    }

    //二分搜索

    int BinarySearch(int *apiArray, int arraySize, int goal)
    {
     int high = arraySize;
     int low = 0;
     int mid;
     while(high > low+1){            //low必须加一,要不查找不到元素时会死循环
       mid = (high+low)/2;
      if(goal < apiArray[mid])
       high = mid;
      else if (goal > apiArray[mid])
       low = mid;
      else
       return mid;
     }
     return arraySize;
    }

    int main()
    {
     int a[] = {13,365,23,234,403,23,9,98,15,143};

     lvQuickSort(a,sizeof(a)/4);
     for(int i=0; i < sizeof(a)/4; i++)
     {
      cout<<a[i]<<'\t';
     }
     cout<<endl;
     
     int i;
     cin >>i;
     i = BinarySearch(a,sizeof(a)/4,i);
     if(i==sizeof(a)/4)
      cout<<"Search failure!!!!"<<endl;
     else
      cout<<"The goal's site is  "<<i<<endl;
     return 0;
    }

  • 相关阅读:
    SolarWinds Orion API 远程代码执行漏洞(CVE-2020-10148)
    Lanproxy 路径遍历漏洞 (CVE-2021-3019)
    公众号文章集合-2020整理回顾
    PHPMailer远程命令执行漏洞复现
    SaltStack Shell 注入 (CVE-2020-16846)漏洞
    (CVE-2020-7961)Liferay Portal RCE 反序列化命令执行漏洞
    (CVE-2020-17530)Struts2 S2-061 远程命令执行漏洞复现
    ora-01722 无效数字
    公开课平台推荐
    PL/SQL Developer如何导出数据成sql的insert语句
  • 原文地址:https://www.cnblogs.com/guotao/p/2809819.html
Copyright © 2011-2022 走看看