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;
    }

  • 相关阅读:
    17 python学习笔记-异常处理
    二、如何使用postman做接口测试笔记(二)
    16 python学习笔记-使用yagmail模块发送邮件
    15 python学习笔记-多进程multiprocessing
    14 python学习笔记-多线程threading
    用HTML5构建一个流程图绘制工具
    百度地图API绘制带头箭头的折线
    使用JsPlumb绘制拓扑图的通用方法
    SQL Server 2008启用sa账户
    eclipse/ggts/myeclipse清除SVN用户名和密码
  • 原文地址:https://www.cnblogs.com/guotao/p/2809819.html
Copyright © 2011-2022 走看看