C语言:“冒泡排序”与“二分法”
1.冒泡排序:
what:将元素进行两两比较,大的(小的)向后排。
when:数组中有多个元素,需要进行比较排序比较的时候使用。
how:N个数字来排队,两两比较小靠前。(升序)
外层循环:N-1(控制比较的轮数)
内层循环:N-1-i(控制每轮比较的的次数,i代表外层循环变量)
for example:
int num[5];
int i,k,j,temp;
for(i=0;i<5;i++)
{
printf("请输入5个元素\n");
scanf("%d",&num[i]);
}
for(i=0;i<4;i++)
{
for(k=0;k<4-i;k++)
{
if(num[k]>num[k+1])//注意不能是num[k]>num[k-1]
{
temp=num[k];
num[k]=num[k+1];
num[k+1]=temp;
}
}
}
for(j=0;j<5;j++)
{
printf("%d\n",num[j]);
}
2.二分法查找(折半查找):前提查找的元素必须有序。
what:将待查找的元素与数组中的中间位置元素进行比较。
when:要查找数组中某一元素。
how:将待查找的数字与数组中的中间位置进行比较。
如果比中间位置的元素值小,去左边查找(更改结束位置)。
如果比中间位置的元素值大,去右边查找(更改起始位置)。
for example:
int nums[9]={1,2,3,4,5,6,7,8,9};
int i=0,left,right,mid,search;
left=0;
right=8;
printf("请输入要查找的值\n");
scanf("%d",&search);
while(left<=right) //当为偶数序列时会出现相等的情况
{
i++;
mid=(left+right)/2;
if(search<nums[mid])
{
right=mid-1;
}
else if(search>nums[mid])
{
left=mid+1;
}
else
{
break;
}
}
printf("查找这个%d一共用了%d次\n",search,i);
C语言:“冒泡排序”与“二分法”的更多相关文章
- js 排序:sort()方法、冒泡排序、二分法排序。
js中的排序,这里介绍三种,sort()方法.冒泡排序.二分法排序. 1.sort方法 写法: 数组.sort(); 返回排好序的数组,如果数组里是数字,则由小到大,如果是字符串,就按照第一个字符的 ...
- js冒泡排序与二分法查找
冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i<attr.length-1;i++) { //控制每轮的比 ...
- c语言冒泡排序
在C语言中,常用的排序算法有:冒泡排序.快速排序.插入排序.选择排序.希尔排序.堆排序以及归并排序等等. 冒泡排序基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面. #include ...
- c语言冒泡排序,指针,数组
冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复 ...
- C语言的算法--------二分法查找
int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low<high){middle=(low+hig ...
- Java冒泡排序与二分法查找的代码随笔
package javafirst; import java.util.Arrays; class MaoPao{ //升序排列 /** * @param arr 要排序的数组 * @return i ...
- 史上最详细的C语言冒泡排序算法
未经同意,请勿转载. void bubbing(){ ] = {,,,,,,,,,};//define init the array //going to the exinternal loop,st ...
- c语言冒泡排序算法
案例一: #include <stdio.h> int main(void){ int a[5]; printf("please input sort number:" ...
- C语言冒泡排序法分析及代码实现
冒泡排序法: 所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法.具体方法是,相邻数值两两交换.从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换( ...
随机推荐
- 返回的json数据中有属性为null的情况,报错 "message" : "Could not write JSON: Object is null
- npm更换成淘宝镜像源以及cnpm
1.需求由来 由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常.所以如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队(阿里巴巴旗下业务阿里云)干了这事.来自官网:“ ...
- React造轮子:拖拽排序组件「Dragact」
先来一张图看看: 项目地址:Github地址 (无耻求星!) 在线观看(第一次加载需要等几秒):预览地址 说起来不容易,人在国外没有过年一说,但是毕竟也是中国年,虽然不放假,但是家里总会主内一顿丰盛的 ...
- Java 转发和重定向的区别
转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发不会执行转发后的代码;重定 ...
- 【转】分布式文件系统FastDFS原理介绍
什么是FastDFS? FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为 ...
- Jmeter+ant+Jenkins接口自动化框架搭建
摘自:https://testerhome.com/topics/13389 一.背景 上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...
- attr(name|properties|key,value|fn)
attr(name|properties|key,value|fn) 概述 设置或返回被选元素的属性值.大理石平台厂家 参数 nameStringV1.0 属性名称 propertiesMapV1 ...
- AJAX-基础-1
概述 AJAX = Asynchronous JavaScript And XML(异步 JavaScript 及 XML) AJAX 是 Asynchronous JavaScript And XM ...
- Leetcode题目33.搜索旋转排序数组(中等)
题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在 ...
- 2018-2019-2 20165205 网络对抗技术 Exp7 网络欺诈防范
2018-2019-2 20165205 网络对抗技术 Exp7 网络欺诈防范 实验内容 本次实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET ...