最基本的題目:一個數組,未知長度,按從小到大的順序進行排列;現在用基本的冒泡排序方法進行排序!
一種思路是先把大的往後排,數組呈逐步減少的狀態,排序的過程爲:
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次