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语言冒泡排序法分析及代码实现
冒泡排序法: 所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法.具体方法是,相邻数值两两交换.从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换( ...
随机推荐
- XMLHttpRequest status为0
//创建XMLHttpRequest()对象 var request = new XMLHttpRequest(); ...... 今天写一个ajax , 明明是有结果返回的,但得到的request ...
- linux内核 进程调度
概念: 进程调度决定那个进程投入运行,运行多长时间. 进程调度没有太复杂的原理,最大限度的利用处理器时间的原则是:只要有可执行的程序,那么总会有进程在执行,如果可运行的进程比处理器数目要多,那么注定要 ...
- Zabbix Agent 安装指南和 Zabbix Server 设置自动发现
Zabbix Agent分为两种模式,被动模式(Passive)和主动模式( 我们实验在node1.yulongjun.com 和node2.yulongjun.com上分别配置Zabbix Agen ...
- css实现单行、多行文本超出显示省略号
前言:项目中我们经常遇到这种需求,需要对单行.多行文本超出显示为省略号.这篇文章主要总结了小编解决此问题的方法,有不足之处欢迎大家指正. 单行文本省略 .ellipsis-line { border: ...
- ESP8266常见问题汇总——转载自官网
ESP8266 常见问题 本页面收集esp8266常见问题 概述 本文档主要介绍开发者在ESP8266开发中常见的一些问题. 这些问题主要包括以下几大类: 基本概念相关 ESP8266 相关 AiCl ...
- 判断一个ip地址合法性(基础c,不用库函数)
#include <stdio.h> int judge(char *strIp); int main() { ]; ) { scanf("%s", a); == ju ...
- CSS 中蒙版相关设置二三事
写 蒙版 时会使用透明度,第一反应会使用 opacity 但这个会使子元素继承,蒙版内还有内容会被影响,从而会设置 background 属性的 rgba 值. 需要注意的是 rgba 和 gba 颜 ...
- Inter IPP 处理图像数据的方法
Inter IPP没有读取图片和保存图片的函数,需要结合opencv完成这个功能. opencv读到图片以后逐个像素点赋值给IPP显然是不可取的,方法如下: int main(int argc, ch ...
- 0.4 IDEA报错以及解决方式
0.4 IDEA报错以及解决方式一.端口被占用 [WARNING] FAILED SelectChannelConnector@0.0.0.0:8080: java.net.BindException ...
- svn 同步备份的所有问题,亲测可用
svnsync 异地同步收获 (2010-07-06 10:06:19) 转载▼ 标签: 杂谈 分类: svn svnsync 异地同步收获: 来自:我用Subversion - http://www ...