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

  • 相关阅读:
    分布式数据库拆分表常用的方法
    linux服务器502错误详解【转载】
    全国各城市代码
    Linux下git安装
    linux上访问windows目录
    百度技术总监谈12306高性能海量并发网站架构设计
    Ubuntu 10.04 安装无线网卡驱动。
    晕菜, silverlight !
    linux 软件记录.
    硬盘安装 Ubuntu10.04
  • 原文地址:https://www.cnblogs.com/guotao/p/2809819.html
Copyright © 2011-2022 走看看