冒泡排序

当前项跟后一项比较大小
小的在前大的在后互换位置
重复执行到所有数据都按照从小到大的顺序排序

int abc[10]={6,8,3,9,1,10,7,2,4,5};
for(int i=0;i<=9;i++)
{for(int j=i+1;j<=9;j++)//循环完后才会返回,然后i才会自增 (数组的每个数都会过一遍这个循环){if(abc[i]>abc[j]){int storage=abc[i];abc[i]=abc[j];abc[j]=storage;}}
}

一次二分查找

多个元素中每一次都折半去查找一次
有个缺陷是必须是按照从小到大顺序才能找到

 #include<stdio.h>//《一次二分查找》
int qiuxiabiao(int arr[], int x, int y)
{int left = 0;int right = y - 1;int half;while (left <= right){//一次二分查找   多个元素中每一次都折半去查找一次half = (left + right) / 2;if (arr[half] > x){right = half - 1;}else if (arr[half] < x){left = half + 1;}else return half;}return -1;
}
void main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10,11 };int key = 11;int sz = sizeof(arr) / sizeof(arr[0]);int mod;mod = qiuxiabiao(arr, key, sz);if (mod == -1) printf("没找到");else printf("找到了 下标为%d", mod);
}

衍生(倒置元素)

    int arr[10] = { 1,4,2,3,4,7,7,5,8,6 };int sz = sizeof(arr) / sizeof(arr[0]);int* left = &arr[0];int* right = &arr[sz - 1];while (left < right){int storage = *left;*left = *right;*right = storage;left++;right--;}

求位数

  1. 求整数有多少位
int digit(int x)//返回一共有多少位
{int count = 0;while (1){if ((x /= 10) != 0) count++;else{count++;break;}}return count;
}
void Digit(int x)//显示每一位的数字
{if (x < 0){x = -x;printf(" -");}if (x!=0){Digit(x / 10);printf(" %d", x % 10);}
}
  1. 求整数二级制中有多少1
int Binary1(int x)//返回当前数二级制中有多少个一
{//只适用于正数int count = 0;while (x != 0){if (x % 2 == 1) count++;x /= 2;}return count;
}
int Binary2(int x)
{int count = 0;for (int i = 1; i <= 32; i++){if ((x & 1) == 1) count++;//判断二进制最后一位是不是1x >>= 1;//x二进制位向右移动//一共移动32次就可以全部判断一遍}return count;
}
int Binary3(int x)
{int count = 0;while (x){x &= (x - 1);//每次减一都会去掉一个1(二进制中的1),这样直到减到全为0count++;//计数器计数便是有多少个1}return count;
}

4_冒泡排序,一次二分查找,求位数相关推荐

  1. 二分查找求上界和下界

    二分查找求上界和下界 假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在 ...

  2. 算法--二分查找--求平方根(循环法/递归法)

    二分查找: 数据需要是顺序表(数组) 数据必须有序 可以一次排序,多次查找:如果数据频繁插入,删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高,二分查找不合适 数据太小,不用二分查找 ...

  3. 冒泡排序,递归二分查找法,二分法

    #冒泡排序list1=[2,4,5,6,7,8,9,11,30,35,38,41,42] def bubble_sort(list):for i in range(len(list)-1):for j ...

  4. 二分查找求最大值用master公式

  5. java排序方法调用_Java实现顺序查找、二分查找、冒泡排序、方法调用

    上帝没给我成为富二代的机会,但是给了我成为富一代的机会! 主子很萌:敲代码是个快乐的过程代码截图/图1 题目题目/图2 程序源代码 import java.util.Scanner; /** * * ...

  6. Java基础语法——选择排序、冒泡排序以及二分查找法和Arrays类的使用

    本文将带你了解选择排序.冒泡排序以及二分查找法的原理和代码实现,以及通过Arrays类快速实现对数组的一些操作 文章目录 一.选择排序 二.冒泡排序 三.二分查找法 四.Arrays类(对数组的操作) ...

  7. 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...

  8. 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程

    day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...

  9. Python算法之二分查找

    二分查找就是每次都取中间值,来对要查找的值进行对比,不断缩小范围的过程. 例如: 我们利用一个猜数字的小游戏来举例,我们心里想一个范围是0-6的整数2,接下来把0-6的数组罗列[0,1,2,3,4,5 ...

最新文章

  1. python输入函数后无法运行_python - 如何在函数运行期间忽略所有用户输入?_python_酷徒编程知识库...
  2. 中国如何成为一流国家
  3. Spring IOC之依赖
  4. .NET Core TDD 前传: 编写易于测试的代码 -- 依赖项
  5. 使用Dagger 2在GWT中进行依赖注入
  6. 用cookiecutter快速构建机器学习项目结构
  7. impala的substr从第几位截到最后一位_天赋不输乔丹,麦迪选秀为何只排第9?看前面几位,第1让老詹吃瘪...
  8. 关系运算符 与 逻辑运算符
  9. pytorch保存模型参数
  10. java api接口签名验证失败_cryptapi结合java进行数字签名与验证签名的困惑
  11. ros::spin() 和 ros::spinOnce() 区别及详解
  12. 基于LQR的二自由度云台控制与仿真
  13. 用CSS+HTML代码制作的3D动态旋转相册
  14. 在Win10系统中用mimikatz抓取明文密码
  15. 奠定技术基石 英特尔创新引擎闪耀CES2019
  16. 三创赛优秀作品_三创赛优秀作品.doc
  17. Jenkins测试报告邮件通知模板(转载)
  18. Hinton论文系列-Reducing the dimensionality of data with neural networks
  19. Android P 电量管理
  20. C#控制台应用程序之旅游资源与线路管理系统

热门文章

  1. 如何部署python网站_如何在网易蜂巢发布部署Python网站
  2. oracle alter table xxoo add constraint pk_xxoo primary key
  3. identity的作用
  4. phpstorm 设置模板
  5. java 正则 空白字符_关于JAVA正则匹配空白字符的问题
  6. 打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示
  7. 微信小程序——签到系统(入门级)
  8. C++ 一维数组实现杨辉三角(Pascar Triangel)
  9. echarts图表的一些小技巧(持续更新,自用)
  10. 华为产品测评官-开发者之声 半吊子学生的两天体验