冒泡排序 与二分法

<script type="text/javascript">

//var attr = [1,8,26,4,15,3,7,42,9];

//对数组元素进行排序
//冒泡排序
/*8 6 4 5 3 7 2 9 1 8
8 6 5 4 7 3 9 2 1 7
8 6 5 7 4 9 3 2 1 6
8 6 7 5 9 4 3 2 1 5
8 7 6 9 5 4 3 2 1 4
8 7 9 6 5 4 3 2 1 3
8 9 7 6 5 4 3 2 1 2
9 8 7 6 5 4 3 2 1 1 */

//两个相邻的元素进行比较,满足条件元素互换
//进行比较的轮数是数组的长度减一

//定义一个交换使用的中间变量
//var zj = 0;

//控制比较的轮数
/*for(var i=0;i<attr.length-1;i++)
{
//控制每轮比较的次数
for(var j=0;j<attr.length-1-i;j++)
{
//如果下一个元素大于当前元素
if(attr[j]<attr[j+1])
{
//互换
zj = attr[j];
attr[j] = attr[j+1];
attr[j+1] = zj;

}
}
}*/

//alert(attr[0]);

//attr.sort();

//alert(attr[3]);

//在数组里面查找数据
var attr = [1,2,3,4,5,6,7,8,9];

//要查找的值
var v = 0;

//循环遍历的方式
/*var sy = -1;
for(var i=0;i<attr.length;i++)
{
if(attr[i]==v)
{
sy = i;
}
}

if(sy == -1)
{
alert("没找到数据");
}
else
{
alert("该数据在数组里面的索引为:"+sy);
}*/

//二分法查找数据

//最小索引
var minsy = 0;
var maxsy = attr.length-1;
var midsy ;

//循环比较
while(true)
{
//计算中间索引
midsy = parseInt((minsy+maxsy)/2);

//比较中间值和用户的值
//判断中间索引的值是否等于用户要查找的值
if(attr[midsy] == v)
{
//如果等于,就退出循环,找到了数据
break;
}

//判断是否只剩下两个数据
if(midsy == minsy)
{
//判断两个数据中的另外一个是否等于用户查找的值
if(attr[midsy+1]==v)
{
//找到了值,退出循环
midsy = midsy+1;
break;
}
else
{
//没有找到值,退出循环
midsy = -1;
break;
}
}
//用来改范围
if(attr[midsy]>v)
{
maxsy = midsy;
}
else
{
minsy = midsy;
}
}

alert(midsy);

</script>

时间: 2024-08-05 11:32:35

冒泡排序 与二分法的相关文章

js 排序:sort()方法、冒泡排序、二分法排序。

js中的排序,这里介绍三种,sort()方法.冒泡排序.二分法排序. 1.sort方法 写法:  数组.sort(); 返回排好序的数组,如果数组里是数字,则由小到大,如果是字符串,就按照第一个字符的字符编码大小排序. 写法2: 数组.sort(function(a,b){ return a-b }); 表示从大到小,(如果写 retrun b-a 则由大到小排序): 不详细解释了. 2.冒泡排序. 原理是,直接将原理可能不好懂,我们还是按照下面的方法去讲吧,这样容易懂些. //冒泡排序func

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",&

冒泡排序与二分法

var attr=[1,8,6,4,5,3,7,2,9]   //对数组进行排序,冒泡排序 //两个相邻的元素进行比较,满足条件互换//进行比较的轮数是数组的长度-1//控制比较的轮数 for(var i=0;i<attr.length-1;i++) {//控制每轮比较的次数 for(var j=0;j<attr.length-1-i;j++) {//如果下一元素>当前元素 if (attr[j]<attr[j+1]) {//互换 zj=attr[j]; attr[j]=attr[

9.19 数组 冒泡排序和二分法

数组:相同类型数据的集合 强类型语言:1,数组里面只能存放相同数据类型的数据. 2,定义数组时需要定一个长度(可以存放元素的数量) 集合:1,可以存放任意类型的数据, 2,定义时候不需要制定长度 3,内存空间不连续 JS 数组:1,可以存放任何类型的数据. 2,定义时候不需要制定长度 定义一个数组 var  attr = array(1,3.14,”aa”);  数组里面数据排列顺序是0  1  2  3  4… 中间每个数据用逗号分割, Var   attr= attr(5): Var  at

C# 10 总复习

数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体 一.数据类型: (一)内建类型 整型(int short long byte uint ushort ulong sbyte),浮点(double float decimal),布尔(bool),字符(char) 对于整型和浮点型都有个ToString("格式化字符串"): #——任意一个数字.有的话就显示,没有就不显示. 0——必须有一个数字,没有的话就补零. .——小数点 ,——千位分隔.

C#。总结

数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体一.数据类型: (一)内建类型 整型(int short long byte uint ushort ulong sbyte),浮点(double float decimal),布尔(bool),字符(char) 对于整型和浮点型都有个ToString("格式化字符串"): #——任意一个数字.有的话就显示,没有就不显示. 0——必须有一个数字,没有的话就补零. .——小数点 ,——千位分隔. (

数据库思考和推测

软件还真不是一条好走的路,具体到细节各部分好让人头大.前端稍微清晰一点以后,想到数据库的使用让人不好理清. 按道理说,数据库就是一种比较容易存储和读取的文件格式,就像txt格式一样,再加上一些加密处理.具体到内部的划分.一个数据库的可伸缩性,还有一个数据库所代表的模块.所表现的内部堆栈处理逻辑.自己没有见到过,于是也不容易设想,大体的倒是知道. 如果可以的话,给每个用户建立一个数据库,这样每次登陆相应的数据库查找东西就可以了,不用那么都都挤在一个表中.挤在一个表中的好处是方便使用,就像不管什么东

C#—总结

数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体 一.数据类型:(一)内建类型整型(int short long byte uint ushort ulong sbyte),浮点(double float decimal),布尔(bool),字符(char). 对于整型和浮点型都有个ToString("格式化字符串"): #——任意一个数字.有的话就显示,没有就不显示. 0——必须有一个数字,没有的话就补零. .——小数点 ,——千位分隔. (

高级iOS开发工程师的面试题

1:CALayer与UIView的区别是什么? 两者最大的区别就是:涂层不会直接渲染到屏幕上: UIView是iOS界面元素的基础,所有界面元素都是继承于它,他的本身全是由CoreAnimation来实现的: 真正的绘图部分,是有CALayer类来管理的: 一个UIView上可以有n个CALayer,每个layer来显示一种东西,增强UIView的展现能力. 2:GCD GCD是苹果公司开发的一个较新的多核编程的解决办法. GCD是一个可以替代诸如NSThread等技术的很高效和强大的技术,完全