知識擴充:時間複雜度:演算法的時間複雜度是乙個函式,描述了演算法的執行時間。時間複雜度越低,效率越高。
自我理解:乙個演算法,執行了幾次時間複雜度就為多少,如執行了n次,則時間複雜度為o(n)。
1.氣泡排序
解析:1
.比較相鄰的兩個元素,如果前乙個比後乙個大,則交換位置。
2.第一輪的時候最後乙個元素應該是最大的乙個。
3.按照步驟一的方法進行相鄰兩個元素的比較,這個時候由於最後乙個元素已經是最大的了,所以最後乙個元素不用比較。
複製** 1
function sort(elements) 9
}10}11
}1213var elements = [3, 1, 5, 7, 2, 4, 9, 6, 10, 8
];14 console.log('
before:
' +elements);
15sort(elements);
16 console.log('
after:
' +elements);
複製**
2.快速排序
解析:快速排序是對氣泡排序的一種改進,第一趟排序時將資料分成兩部分,一部分比另一部分的所有資料都要小。然後遞迴呼叫,在兩邊都實行快速排序。
複製**
function quicksort(elements)
var pivotindex = math.floor(elements.length / 2);
var pivot = elements.splice(pivotindex, 1)[0];
var left =;
var right =;
for (var i = 0; i < elements.length; i++)
else
}
return
quicksort(left).concat([pivot], quicksort(right)); };
var elements=[5,6,2,1,3,8,7,1.2,5.5,4.5
];alert(quicksort(elements));
複製**
3.插入排序
解析:(
1) 從第乙個元素開始,該元素可以認為已經被排序(2
) 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄(3
) 如果該元素(已排序)大於新元素,將該元素移到下一位置(4
) 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置(5
)將新元素插入到下一位置中(6
) 重複步驟2
複製** 1
insertsort: function(elements) else17}
1819 elements[j + 1] =key;20}
2122
return
elements;23}
複製** 2
.二分查詢
解析:二分查詢,也為折半查詢。首先要找到乙個中間值,通過與中間值比較,大的放又,小的放在左邊。再在兩邊中尋找中間值,持續以上操作,直到找到所在位置為止。(1
)遞迴方法
複製** 1
function binarysearch(data,item,start,end)else
if(item12return
false;13
}1415var arr=[34,12,5,123,2,745,32,4
];16
17 binary(arr,5
);複製** (2
)非遞迴方法
複製** 1
function binarysearch(data, item) 9
if(item >data[m])else14}
1516
return
false;17
}18var arr=[34,12,5,123,2,745,32,4
];19 binarysearch(arr,5
);複製**
js基本排序演算法(遞增)
原理 先找出當前陣列中最大的那個放到最後 步驟 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個 資料交換。這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。n n 1,如果n不為0就重複前面二步,否則排序完成。function bubble...
js版基本排序演算法
在每一輪資料比較中,在每一次兩者資料比較中,當前者值大於後者 後者值大於前者 需要進行公升序 降序 排列時,將其兩者數值進行調換,每一輪中可能有n次數值交換,總共可能需要進行 n 1 輪,其中o n 2 氣泡排序是一種嚴格的穩定排序演算法,它不改變序列中相同元素之間的相對位置關係。譬如對陣列中儲存的...
js基本基礎
js 基礎 arr.push list 在陣列末尾新增list值 var item arr.pop 取出陣列中的最後一項,刪除陣列的最後一項,並返回最後一項的值 var item arr.shift 取出陣列中的第一項,並返回 arr.unshift list 向陣列的第一項推入list值 arr....