`

数组排序专题(一)---冒泡排序

J# 
阅读更多

最基本的题目:一个数组,未知长度,按从小到大的顺序进行排列;现在用基本的冒泡排序方法进行排序!

一种思路是先把大的往后排,数组呈逐步减少的状态,排序的过程为:

i=0时,j=0,j<5,j++

8 3 6 1 -2

3 8 6 1 -2

3 6 8 1 -2

3 6 1 8 -2

3 6 1 -2 8

i=1时,j=0,j<4,j++

3 6 1 -2 8

3 6 1 -2 8

3 1 6 -2 8

3 1 -2 6 8

 

i=2时,j=0,j<3,j++

3 1 -2 6 8

1 3 -2 6 8

1 -2 3 6 8

 

i=3时,j=0,j<2,j++

1 -2 3 6 8

-2 1 3 6 8

 

i=4时,j=0,j<1,j++

-2 1 3 6 8

-2 1 3 6 8

 

具体的实现代码是:

 

var arr = [8,3,6,1,-2];
var temp;
var count=0;
for(var i=0; i<arr.length; i++)
{
	for (var j = 0; j < arr.length-i; j++) 
	{
    	if (arr[j + 1] < arr[j]) 
    	{
        	temp = arr[j + 1];
	        arr[j + 1] = arr[j];
    	    arr[j] = temp;
			count++;
			//alert("i:"+i+"j:"+j);
	    }
	}
}
document.write(arr);
document.write("总共循环了"+count);//9

 

 

另外一种思路是把小的元素往前排,再比较的时候就比较剩下的元素就可以了,i=0先把-2给换到最前边,i=1把1网签拽,数组就剩下8 3 6了 ,数组就越来越小了!

var arr = [8,3,6,1,-2];
var temp;
var count=0;
for(var i=0; i<arr.length; i++)
{
	for (var j =arr.length-1; j >= i; j--) 
	{
    	if (arr[j + 1] < arr[j]) 
    	{
        	temp = arr[j + 1];
	        arr[j + 1] = arr[j];
    	    arr[j] = temp;
			count++;			
	    }
		//alert("i:"+i+"j:"+j);
	}
}
document.write(arr);
document.write("总共循环了"+count);//9
 

  当然这两种思路都是冒泡法,5个不重复的元素,循环了9次

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics