zoukankan      html  css  js  c++  java
  • 选择排序、冒泡排序、二分查找(折半查找)

    大家觉得选择排序和冒泡排序?哪种效率和速度好些呢?

    其实要看场合,也就是看数据的储存环境。

    一般数据是随机分散储存的,可以优先使用选择法。

    如果数据是连续存储的,优先使用冒泡法。

    冒泡排序:

    void main()
    {
      int szData[] = {3, 2, 1, 4, 5, 2, 11, 7, 33, 6, 9};
      int iCount = sizeof(szData)/sizeof(szData[0]);
      for (int i = 0; i < iCount; i++)
        for(int j = 0; j < iCount-1; j++ )
        {
          if (szData[j] > szData[j+1])
          {
            int iTemp = szData[j];
            szData[j] = szData[j+1];
            szData[j+1] = iTemp;
          }
        }
    }

    选择法排序:

    void main()
    {
      int szData[] = {3, 2, 1, 4, 5, 2, 11, 7, 33, 6, 9};
      int iCount = sizeof(szData)/sizeof(szData[0]);
    
      for (int i = 0; i < iCount; i++)
      {
        int iMin = i;
        for (int j = i; j < iCount; j++)
        {
          if (szData[j] < szData[iMin])
            iMin = j;
        }
        if (iMin != i)
        {
          int iTemp = szData[iMin];
          szData[iMin] = szData[i];
          szData[i] = iTemp;
        }
      }
    }

    二分查找法,是对于有序的储存数据的查找算法,算法时间复杂度为: O(log2n)

    也就是对数阶,效率仅次于常量阶。说以说。在有序并且修改情况很少数据使用二分查找。效率是很高滴!

    算法:

    // 二分查找算法
    int FindBy2(int* pData, int iData, int iCount)
    {
      int iLeft  = 0;
      int iRight = iCount-1;
      int iIndex = 0;
      while (iLeft <= iRight)
      {
        iIndex = (iRight+iLeft)/2;
        if (pData[iIndex] == iData)
        {
          return iIndex;
        }
        else if (pData[iIndex] > iData)
        {
          iRight= iIndex - 1;
        }
        else if (pData[iIndex] < iData)
        {
          iLeft = iIndex + 1;
        }
      }
      return -1;
    }
    
    int main(int argc, char* argv[])
    {
      int szData[] = {1,2,3,4,5,6,7,8,9};
      int iCount = sizeof(szData)/sizeof(szData[0]);
    
      int iIndex = FindBy2(szData, 5, iCount);
      return 0;
    }
  • 相关阅读:
    滚动条美化插件 nicescroll
    百度地图api
    Echarts的重点
    3月20号课堂随笔
    循环for语句
    有关一些CSS的基本内容
    HTML基本标签和一些注释的问题
    2018年3月17号的随堂笔记
    03.15补习
    for 的相关用法
  • 原文地址:https://www.cnblogs.com/ziolo/p/3091977.html
Copyright © 2011-2022 走看看