4_冒泡排序,一次二分查找,求位数
冒泡排序
当前项跟后一项比较大小
小的在前大的在后互换位置
重复执行到所有数据都按照从小到大的顺序排序
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--;}
求位数
- 求整数有多少位
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
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_冒泡排序,一次二分查找,求位数相关推荐
- 二分查找求上界和下界
二分查找求上界和下界 假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在 ...
- 算法--二分查找--求平方根(循环法/递归法)
二分查找: 数据需要是顺序表(数组) 数据必须有序 可以一次排序,多次查找:如果数据频繁插入,删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高,二分查找不合适 数据太小,不用二分查找 ...
- 冒泡排序,递归二分查找法,二分法
#冒泡排序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 ...
- 二分查找求最大值用master公式
- java排序方法调用_Java实现顺序查找、二分查找、冒泡排序、方法调用
上帝没给我成为富二代的机会,但是给了我成为富一代的机会! 主子很萌:敲代码是个快乐的过程代码截图/图1 题目题目/图2 程序源代码 import java.util.Scanner; /** * * ...
- Java基础语法——选择排序、冒泡排序以及二分查找法和Arrays类的使用
本文将带你了解选择排序.冒泡排序以及二分查找法的原理和代码实现,以及通过Arrays类快速实现对数组的一些操作 文章目录 一.选择排序 二.冒泡排序 三.二分查找法 四.Arrays类(对数组的操作) ...
- 程序员面试金典 - 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)
文章目录 1. 题目 2. 解题 2.1 超时解 2.2 二分查找 1. 题目 有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一 ...
- 【02】Java进阶:09-冒泡排序、选择排序、二分查找、异常、异常的产生和处理、自定义异常、多线程
day09[排序算法.异常.多线程基础] 今日内容 冒泡排序 选择排序 二分查找 异常处理 多线程基础 教学目标 能够理解冒泡排序的执行原理 能够理解选择排序的执行原理 能够理解二分查找的执行原理 能 ...
- Python算法之二分查找
二分查找就是每次都取中间值,来对要查找的值进行对比,不断缩小范围的过程. 例如: 我们利用一个猜数字的小游戏来举例,我们心里想一个范围是0-6的整数2,接下来把0-6的数组罗列[0,1,2,3,4,5 ...
最新文章
- python输入函数后无法运行_python - 如何在函数运行期间忽略所有用户输入?_python_酷徒编程知识库...
- 中国如何成为一流国家
- Spring IOC之依赖
- .NET Core TDD 前传: 编写易于测试的代码 -- 依赖项
- 使用Dagger 2在GWT中进行依赖注入
- 用cookiecutter快速构建机器学习项目结构
- impala的substr从第几位截到最后一位_天赋不输乔丹,麦迪选秀为何只排第9?看前面几位,第1让老詹吃瘪...
- 关系运算符 与 逻辑运算符
- pytorch保存模型参数
- java api接口签名验证失败_cryptapi结合java进行数字签名与验证签名的困惑
- ros::spin() 和 ros::spinOnce() 区别及详解
- 基于LQR的二自由度云台控制与仿真
- 用CSS+HTML代码制作的3D动态旋转相册
- 在Win10系统中用mimikatz抓取明文密码
- 奠定技术基石 英特尔创新引擎闪耀CES2019
- 三创赛优秀作品_三创赛优秀作品.doc
- Jenkins测试报告邮件通知模板(转载)
- Hinton论文系列-Reducing the dimensionality of data with neural networks
- Android P 电量管理
- C#控制台应用程序之旅游资源与线路管理系统
热门文章
- 如何部署python网站_如何在网易蜂巢发布部署Python网站
- oracle alter table xxoo add constraint pk_xxoo primary key
- identity的作用
- phpstorm 设置模板
- java 正则 空白字符_关于JAVA正则匹配空白字符的问题
- 打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示
- 微信小程序——签到系统(入门级)
- C++ 一维数组实现杨辉三角(Pascar Triangel)
- echarts图表的一些小技巧(持续更新,自用)
- 华为产品测评官-开发者之声 半吊子学生的两天体验