首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

冒泡排序跟二分查找

2014-01-06 
冒泡排序和二分查找script typetext/javascript????/**?????* js 冒泡排序?????*/????//var? numArr

冒泡排序和二分查找
<script type="text/javascript">????/**?????* js 冒泡排序?????*/????//var? numArr = [-3,-10,0,32,9,3,23];????var??numArr = [-1,0,3,23,34,];????var?flag =?false;????for(var?i = 0; i < numArr.length -1; i++) {?//控制比较多少轮????????document.writeln("比较多少轮:"?+ (i+1) +?"<br />");????????for(var?j = 0; j < numArr.length - i -1;j++) {//控制每轮比较的次数????????????if(numArr[j] > numArr[j+1]) {????????????????//交换 //从小到大????????????????var?temp = numArr[j];????????????????numArr[j] = numArr[j+1];????????????????numArr[j+1] = temp;????????????????flag =?true; ????????????} //if(numArr[j] < numArr[j+1]) { //从大到小 // //交换 // var temp = numArr[j+1]; //numArr[j+1] = numArr[j]; //numArr[j] = temp; //flag = true;?????????}????????if(flag) {????????????flag =?false;????????}?else?{????????????//禁止循环,这样做的好处:当数组有序时就不要在循环了????????????break;????????}?????????????????????????????????}????document.writeln(numArr);</script>??<script type="text/javascript">????/**?????* JS的二分查找?????* 1.注意事项:二分查找必须针对的是有序的数组,不是有序的数组不能使用二分查找法?????* 2.思路:首先找到数组的中间数(midVal),和你要查找的数(findVal)进行比较,如果?????* midVal > findVal ,则说明在数组的左边,就把该数组二分(就只在左边查找)?????*/????????????????????function?binarySearch(arr,findVal,leftIndex,rightIndex) {????????//防止无穷递归????????if(leftIndex > rightIndex) {????????????document.writeln("找不到");????????????return;????????}????????//找到中间这个值????????var?midIndex = Math.floor((leftIndex + rightIndex)/2);????????var?midVal = arr[midIndex];????????//比较????????if(midVal > findVal) {????????????//在左边查找????????????binarySearch(arr,findVal,leftIndex,midIndex - 1);????????}?else?if(midVal < findVal) {????????????//在右边查找????????????binarySearch(arr,findVal,midIndex+1,rightIndex);????????}?else?{????????????document.writeln("找到了,位置为:"?+ midIndex);????????????return;????????}????}????var?arr = [1,2,5,67,89,90];????binarySearch(arr,3,0,arr.length -1);</script>?<script type="text/javascript">????/*数组的简单行列倒置*/????var?arr = [[2,4,6,8],[1,3,5,9],[9,7,4,2]];????????????????//定义一个新的数组????var?arr2 = [];????//初始化新数组的行数,我认为该数组是规则的,并初始化????for(var?i = 0; i < arr[0].length; i++) {????????arr2[i] = [];????}????????????????//动态的添加新数据,遍历旧数据????for(var?i=0; i < arr.length; i++) {????????for(var?j=0; j < arr[i].length; j++) {????????????arr2[j][i] = arr[i][j];????????}????}????????????????//遍历新数组,显示数据????for(var?i=0; i < arr2.length; i++) {????????for(var?j=0; j < arr2[i].length; j++) {????????????document.writeln(arr2[i][j] +?"&nbsp;");????????}????????document.writeln("<br />");????}????????????</script>http://hanchaohan.blog.51cto.com/2996417/1308498

热点排行