冒泡排序以及string对象及处理字符串的方法

string对象及处理字符串的方法

一、冒泡排序

var arr=[23,3,5,0,18];

获取第一个:alert(arr[0]);

获取最后一个:alert(arr[arr.length-1]);

获取中间一个:alert(arr[(arr.length-1)/2]);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>冒泡排序</title>
		<script type="text/javascript">
			var arr=[23,3,5,0,18];
//			alert([0]);获取第一个
//			alert(typeof arr);   对象类型
//			alert(arr[arr.length-1]);  //获取最后一个
//			alert(arr[(arr.length-1)/2]);//获取中间一个


//			第一轮比较(i=0):  比较了4次 (length-i-1)
//			3,23,5,0,18
//			3,5,23,0,18
//			3,5,0,23,18
//			3,5,0,18,23
//			第二轮比较(i=1): 比较了3次 (length-i-1)
//			3,5,0,18,23
//			3,0,5,18,23
//			3,0,5,18,23
//			第三轮比较(i=2): 比较了2次 (length-i-1)
//			0,3,5,18,23
//			0,3,5,18,23
//			第四轮比较(i=3): 比较了1次 (length-i-1)
//			0,3,5,18,23
			
			for(var i=0;i<arr.length-1;i++){  //控制比较的轮数
				for(var j=0;j<arr.length-i-1;j++){  //控制比较的次数
					var temp;//定义一个变量
					if(arr[j]>arr[j+1]){   //将数据从小到大排列,如果是<的话,数据将从大到小排列,也可用以下翻转进行
						temp=arr[j];
						arr[j]=arr[j+1];
						arr[j+1]=temp;
					}
				}
			}
			for(var i=0;i<arr.length;i++){
				document.writeln(arr[i]);
			}
//			运用翻转将数据从大到小排列
//			var arr1=arr.reverse();
//			for(var i=0;i<arr1.length;i++){
//				document.writeln(arr1[i]);
//			}
		</script>
	</head>
	<body>
	</body>
</html>

二、string对象的属性

length:表示字符串的长度

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>字符串的长度</title>
		<script type="text/javascript">
			var str='Hello ZhangYiXing';
			alert(str.length);
//			document.write(str.length);
		</script>
	</head>
	<body>
	</body>
</html>

三、操作字符串数据的方法

(1)match();

通过此方法输出字符串中指定的值。

			var str1='Hello Zhang YiXing';
			document.write(str1.match('Hello')); //输出结果为Hello
			//document.write(str1.match('hello'));  //输出的结果为null
			//document.write(str1.match('Hello YiXing'));   //输出结果为null
(2)search();

用于检索字符串中指定的子字符串。

			var str2='I Love JavaScript';
			//document.write(str2.search('love'));   //在字符串中检索的字符串不存在,则返回-1
			document.write(str2.search('Love'));   //返回在字符串中的索引位置:是以子字符串的首个字符的索引输出
(3)indexOf();

返回在字符串中元素第一次出现的索引位置。

//			document.write(str2.indexOf('a','0'));  //字符串类型  结果为8
			document.write(str2.indexOf('a',0));  //字符串类型  结果为8
//			document.write(str2.indexOf('a',9));  //   结果为10
//			document.write(str2.indexOf('a',15));  //结果为-1,表示没有查询到数据
(4)replace();

在字符串中用一些字符串替换另一些字符串。

document.write(str2.replace('Love','Like'));
(5)CharAt(n);

用来获取字符串中的某一个字符,n表示的是字符串中字符的下标。

			var str3='What are you doing';
//		    document.write(str3.charAt(4));  //输出空格
//			document.write(str3);
			问题:按照字符串的每一个字符输出页面
			for(var i=0;i<str3.length;i++){
	//			document.write(str3.charAt(0));
	//			document.write(str3.charAt(1));
	//			document.write(str3.charAt(2));
	//			document.write(str3.charAt(3));
	//			document.write(str3.charAt(4));
	//			document.write(str3.charAt(5));
	//			document.write(str3.charAt(6));
	//			document.write(str3.charAt(7));
	//			document.write(str3.charAt(8));
	//			document.write(str3.charAt(9));
	//			document.write(str3.charAt(10));
	//			document.write(str3.charAt(11));
	//			document.write(str3.charAt(12));

				document.write(str3.charAt(i)+'-');
			}
(6)toUpperCase();大写 toLowerCase(); 小写

字符串大小写的转换。

			var str5='I have a dream';
			//document.write(str5.toUpperCase());  //结果为大写
			document.write(str5.toLowerCase());  //结果为小写
(7)concat();

连接字符串

			var str6='I like red';
			document.write(str6.concat(' tea',' and water'));
(8)localeCompare();

比较字符串:用来比较两个字符串,返回一个数字。、

注意:如果字符串1小于字符串2,则返回小于0的数字;
​ 如果字符串1大于字符串2,则返回数字1;
​ 如果字符串1等于字符串2,则返回数字0。

			var str7='hello';
			var str8='Hello';
			document.write(str7.localeCompare(str8));  //结果为-1  注意:同字母比较时,大写字母大于小写字母
			document.write('<hr />');
			var str7_01='Yellow';
			var str8_01='lay';
			document.write(str7_01.localeCompare(str8_01));  //结果为1  注意:不同字母比较时,不论大小写,字母靠后大于字母靠前的
(9)split();

分割字符串,返回结果为一个数组:分隔符:为字符串中的字符。

			var str9='越努力越幸运越努力 越幸运越努力越幸运';
			var arr_09=str9.split(' ');
			document.write(arr_09);
(10)substring();
var str10='I Love You';
document.write(str10.substring(2,8));   //输出的结果为Love Y

四、拓展

1.问题:如何将一个字符放置到一个数组中?

			var str4='Hello World';
			var strString=new Array();
			for(var i=0;i<str4.length;i++){
				strString[i]=str4.charAt(i);
			}
			document.write(strString);
//			遍历数组
			for(var i=0;i<strString.length;i++){
				document.write(strString[i]);
			}

2.substring(); 和substr();区别:

//			如果是一个参数的话,输出的结构一样;
//			如果是两个参数的话,substr是获取从start位开始到end位的字符串长度;
//			substring是获取从start位开始到end位之间的字符串,不包含结束索引的位置
			var str10='I Love You';			 
			document.write(str10.substring(2,8)+'<br />');  //输出的结果为Love Y
			document.write(str10.substr(2,8));     //输出的结果为Love You

	

3.快速排序:是对冒泡排序的一种改进。基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

一趟快速排序的算法是:

1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;

2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];

3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换;

4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;

5)重复第3、步,直到i=j;(3,4步中,没找到符合条件的值,即3中A[i]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直到找到为止。找到符合条件的值,进行交换的时候i,j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。

4.二分查找:也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

算法要求:1.必须采用顺序存储结构;

​ 2.必须按关键字大小有序排列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值