zoukankan      html  css  js  c++  java
  • 常用函数

    /*binsearch函数:在v[0]<=v[1]<=v[2]<=...<=v[n-1]中查找x*/
    int binsearch(int x,int v[], int n)
    {
     int low, high, mid;
     low = 0;
     high = n-1;
     while(low <= high)
     {
      mid = (low + high)/2;
      if(x < v[mid])
       high = mid -1;
      else if(x > v[mid])
       low = mid +1;
      else /*找到了匹配值*/
       return mid;
     }
     return -1; /*没有匹配值*/
    }
     该函数的基本判断是:在每一步判断x小于、大于还是等于中间元素v[mid]。
     
    /*shellsort函数:按递增顺序对v[0]...v[n-1]进行排序*/
    void shellsort(int v[], int n)
    {
     int gap, i, j, temp;
     for(gap=n/2;gap>0;gap/=2)
      for(i=gap;i<n;i++)
       for(j=i-gap;j>=0&&v[j]>v[j+gap];j-=gap)
       {
        temp=v[j];
        v[j]=v[j+gap];
        v[j+gap]=temp;
       }

    该函数中包含一个三重嵌套的for循环语句。最外层的for语句控制两个被比较元素之间的距离,从n/2开始,逐步进行分析,直到距离为0.中间层的for循环语句用于在元素间移动位置。最内层的for语句用于比较各相距gap个位置的元素,当这两个元素逆序时把他们互换过来。由于gap的值最终要递减到1,因此所有元素最终都会位于正确的位置上。
     
     
     
  • 相关阅读:
    P1443 马的遍历
    P1747 好奇怪的游戏
    蜀绣
    Five hundred miles
    如果没有你
    Yellow
    流星

    深入理解计算机中的 csapp,h和csapp.c
    可迭代的集合类型使用foreach语句
  • 原文地址:https://www.cnblogs.com/TheFly/p/11862977.html
Copyright © 2011-2022 走看看