Javascript 冒泡排序

最基本的題目:一個數組,未知長度,按從小到大的順序進行排列;現在用基本的冒泡排序方法進行排序!

一種思路是先把大的往後排,數組呈逐步減少的狀態,排序的過程爲:

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

8 3 6 1 -2

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

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

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次


發佈了48 篇原創文章 · 獲贊 12 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章