一.冒泡排序:
解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。
2.第一轮的时候最后一个元素应该是最大的一个。
3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较
eg:var arr=[23,1,2,0,11];
第一轮比较(0): 比较了4次(arr.length-i-1)
1,23,2,0,11;
1,2,23,0,11;
1,2,0,23,11;
1,2,0,11,23;
第二轮比较(1) 比较了3次(arr.length-i-1)
1,2,0,11,23;
1,0,2,11,23;
1,0,2,11,23;
第三轮比较(2) 比较了2次(arr.length-i-1)
0,1,2,11,23;
0,1,2,11,23;
第四轮(3) 比较了1次(arr.length-i-1)
0,1,2,11,23;
案例1:
<script type="text/javascript">
var arr=[23,1,2,0,11];
var times=0;
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]);
}
</script>
案例2
<script type="text/javascript">
var str=[23,63,12,28,88]
var times=0;
for(var i=0;i<str.length-1;i++){
for(j=0;j<str.length-i-1;j++){
if(str[j]>str[j+1]){
var temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
for(var i=0;i<str.length;i++){
document.writeln(str[i]);
}
</script>
<script type="text/javascript">
var str=[23,63,12,28,88]
var times=0;
for(var i=0;i<str.length-1;i++){
for(j=i+1;j<str.length;j++){
if(str[i]>str[j]){
var temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
for(var i=0;i<str.length;i++){
document.writeln(str[i]);
}
</script>
二.操作字符串数据的方法
(1)match:输出字符串中指定的值;match()方法类似于 indexOf()方法,但是它返回的是指定的值,而不是字符串的位置
(2)search():用于检查字符串中指定的子字符串;
(3)inderOf():返回字符串中元素第一次出现的索引位置(索引可以是数字或字母)
(4)replace():在字符串中用一些字符替换另一些字符
<script type="text/javascript">
// (1)match:输出字符串中指定的值;
var str='Html Css JavaScript';
// document.write(str.match('Css'));
// (2)search():用于检查字符串中指定的子字符串;
var str1='I Love JavaSCript';
// 以字符串的首个字符索引输出,输出结果为2
// document.write(str1.search('Love'));
// 以字符串的首个字符索引输出,输出结果为7
// document.write(str1.search('JavaSCript'));
// (3)indexOf():返回字符串中元素第一次出现的索引位置(索引可以是数字或字母)
// document.write(str1.indexOf('L','0'));
// document.write(str1.indexOf('L','o'));
// document.write(str1.indexOf('a','9'));
// (4)replace():在字符串中用一些字符替换另一些字符
// document.write(str1.replace('Love','like'));
</script>
(5)charAt(n):用来获取字符中的某一个字符,n为字符串的下标(索引)
<script type="text/javascript">
// (5)charAt(n):用来获取字符中的某一个字符,n为字符串的下标(索引)
var str2='How Are You';
// 获取字符串长度
// alert(str2.length);
// 逐个获取字符串的长度:
// document.write(str2.charAt(0));
// document.write(str2.charAt(1));
// document.write(str2.charAt(2));
// document.write(str2.charAt(3));
// document.write(str2.charAt(4));
// document.write(str2.charAt(5));
// document.write(str2.charAt(6));
// document.write(str2.charAt(7));
// document.write(str2.charAt(8));
// document.write(str2.charAt(9));
// document.write(str2.charAt(10));
// document.write(str2.charAt(11));
// 统一获取字符串长度使用for循环
for(var i=0;i<str2.length;i++){
document.write(str2.charAt(i)+',');
}
// 将每一个字符放进数组中
var strString=new Array();
for(var i=0;i<str2.length;i++){
strString[i]=str2.charAt(i);
}
document.write(strString+'<br/>');
for(i=0;i<strString.length;i++){
document.write(strString[i]);
}
</script>
(6)toUpperCase()/toLowerCase()大小写转换
(7)concat()连接字符串
<script type="text/javascript">
// (6)toUpperCase()/toLowerCase()大小写转换
// toUpperCase();大写转换
var str3='Good Morning';
// document.write(str3.toUpperCase());
// toLowerCase()小写转换
// document.write(str3.toLowerCase());
// (7)concat()连接字符串
var str4=str3.concat(' good night');
// document.write(str4);
// alert(str4);
</script>
(8)localecompare()比较字符串,返回一个数字
<script type="text/javascript">
// (8)localecompare()比较字符串,返回一个数字
// (1)如果字符串 1 小于字符串 2,则返回小于 0 的数字;
// (2)如果字符串 1 大于字符串 2,则返回数字 1;
// (3)如果字符串 1 等于字符串 2,则返回数字 0;
// 按照字母的大小写比较
var str5='a,b,c,d';
var str6='A,B,C,D';
// 返回值为 -1
// document.write(str5.localeCompare(str6));
// var str7='Java';
// var str8='Css';
// 返回值为 1
// document.write(str7.localeCompare(str8));
</script>
(9)split():分割字符串,返回结果为一个数组;
说明:分割符可以是一个字符、多个字符或一个正则表达式。分割符并不作为返回数组元素的一部分
(10)substring()截取字符串某一部分字符串;
说明:开始位置是一个非负的整数,表示从哪个位置开始截取。结束位置也是一个非负的整数,表示在哪里结束截取。
<script type="text/javascript">
// (9)split()分割字符串,返回结果为一个数组
var str9='I Love JavaScript';
// 以空格输出结果为I,Love,JavaScript,字符长度为3,以逗号代替分割的内容
var arr1=str9.split(' ');
// 以字母o为分割点分为两部分,结果为:I L,ve JavaScript;字符长度=2
var arr2=str9.split('o');
alert(arr1);
alert(arr2);
alert(arr1.length);
alert(arr2.length);
// (10)substring()截取字符串某一部分字符串
// 输出结果为L
document.write(str9.substring(2)+'<br/>');
// 输出结果为:I Love JavaScript
document.write(str9.substring(0,100));
</script>
问题1:substr和substring的区别:
(1)相同点:如果只写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段。
(2)不同点:当写了第二个参数时,两者就会有完全不同的含义:
substring(start,end):返回一个从 start 开始到最后(不包含 end )的字符串。
substr(start,length):返回一个从 start 开始到最后(包含 end )的指定长度的字符串。注意:如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到 stringvar 的最后。
案例:
var str9='I Love JavaScript';
//输出结果为:Lov
document.write(str9.substring(2,5)+'<br/>');
//输出结果为:Love
document.write(str9.substr(2,5));
问题2:如何将每一个字符放到数组中?
<script type="text/javascript">
var str='Can You Speak English'
var strString=new Array();
for(var i=0;i<str.length;i++){
strString[i]=str.charAt(i);
}
document.write(strString+'<br/>');
for(i=0;i<strString.length;i++){
document.write(strString[i]);
}
</script>
问题3:将每一个字符输出到页面?
var str='Hello,JavaCript';
// 通过遍历数组
for(var i=0;i<str.length;i++){
document.write(str.charAt(i));
}