算法

常用算法
  • 选择排序
    选择排序 : 从小到大
    特点: 拿到其中一个元素依次和其他元素进行比较,最小值出现在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] > nums[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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • #mark- 01-数组内存存储细节 //问题:变量和数组在内存中存储的区别? 注意作图分析内存 1.变量在内存中...
    飞飞喵阅读 4,202评论 0 1
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 13,010评论 0 7
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,247评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,600评论 0 52
  • 我的工作有了新的去处,原来答应的那个地方的位置于是空缺了下来,发了条说说在空间,问有没有想要顶替的朋友,晚上九点左...
    明月冫阅读 1,850评论 0 0

友情链接更多精彩内容