標籤:key 已耗用時間 div 冒泡排序 length 冒泡 span 資料 blog
今天在做排序的練習的時候發現冒泡排序和選擇排序時間差距好大:
for(let i=0;i<arr.length;i++){ //5000個資料大概260毫秒 for(let j=0;j<arr.length-i;j++){ if(arr[j]>arr[j+1]){ let temp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
for(let i=0;i<arr.length;i++){ //5000個資料大概20毫秒 let key = arr[i]; let index = i; let j = i; while(j<arr.length){ if(key>arr[j]){ key = arr[j]; index = j; } j++; } arr[index] = arr[i]; arr[i]=key; }
冒泡和選擇時間複雜都都是O(n^2),但時間卻差了差不多10倍,找了半天以為演算法寫錯了…………
然後把迴圈體都刪了 發現時間還是不一樣就開看了看光迴圈的時間對比
for(let i =0;i<5000;i++){ for(let j=0;j<5000;j++){ } }
let i = 0; while(i<5000){ let j=0; while(j<5000){ j++ } i++; }
時間分別為50 和20感覺有差距
但敲了幾次後又發現
for(let i =0;i<25000000;i++){ }
let i = 0; while(i<25000000){ i++; }
發現兩個已耗用時間是差不多的…………
帶迴圈體運行
for(let i =0;i<25000000;i++){ a+=5; b+=10; }
let i = 0; while(i<25000000){ a+=5; b+=10; i++; }
發現又存在執行時間上的差距了。
總結:for和while迴圈的時間應該是差不多的 但執行迴圈體的時間貌似有差距
js中for和while運行速度比較