算法

作者: 英雄出少年 | 来源:发表于2016-06-14 09:43 被阅读11次

    一、选择排序
    选择排序 : 从小到大
    特点: 拿到其中一个元素依次和其他元素进行比较,最小值出现在0位

    int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
    for(int i = 0 ; i<8 ; i++)
    {
      for(int j = i+1 ; j<= 8 ; j++)
    {
      if(nums[i] > nuts[j])
    {
      int temp = nums[i];
     nums[i] = nums[j];
    nums[j] = temp;
    }
    }
    }
    

    二、冒泡排序
    冒泡排序从小到大
    特点:相邻的两个元素进行比较,每次比较完,最值出现在最后

    int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
    for(int i = 0 ; i<8 ; i++)
    {
      for(int j = 0;j < 8 - i; j++)
      {
        if(nums[j] > nums[j+1])
        {
          int temp = nums[j];
          nums[j] = nums[j+1];
          mums[j+1] = temp;
        }
      }
    
    }
    

    三、折半查找
    折半查找原理:
    数组必须是有序的,必须已知min 和 max(知道范围),动态计算mid的值,取出mid的值进行比较,
    如果mid对应的值大于需要查找的值,那么max要变小为 mid - 1;
    如果mid对应的值小于需要查找的值,那么min要变大为 mid + 1;

    int findKey3(int nums[], int length, int key)
    {
        int min, max, mid;
        min = 0;
        max = length - 1;
        
        // 只要还在我们的范围内就需要查找
        while (min <= max) {
            // 计算中间值
            mid = (min  + max) / 2;
            if (nums[mid] < key) {
                min = mid + 1;
            }else if (nums[mid] > key )
            {
                max = mid - 1;
            }else
            {
                return mid;
            }
            
        }
        return -1;
    }
    

    相关文章

      网友评论

          本文标题:算法

          本文链接:https://www.haomeiwen.com/subject/sruydttx.html