時間複雜度:o(n^2); 最快:資料是正序時 最慢:資料是反序時
function bubblesort(arr)
}} return arr;
}複製**
時間複雜度:o(n^2) 最穩定排序演算法
function selectionsort(arr)
}temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
} return arr;
}複製**
將n個元素的數列分為已有序和無序兩個部分。
數列:將該數列的第一元素視為有序數列,後面都視為無序數列:
,}將無序數列中的元素插入到有序數列的對應位置,插入前通過比大小的方式找到其在有序數列中的對應位置。
時間複雜度:o(n^2); 撲克排序
function insertionsort(arr)
arr[preindex + 1] = current;
} return arr;
}複製**
時間複雜度:o(n log n);
function shellsort(arr)
for (gap; gap > 0; gap = math.floor(gap / 3))
arr[j + gap] = temp;
}} return arr;
}複製**
時間複雜度:o(n log n);
function mergesort(arr)
var middle = math.floor(len / 2),
left = arr.slice(0, middle),
right = arr.slice(middle);
return merge(mergesort(left), mergesort(right));
function merge(left, right) else
}while (left.length)
result.push(left.shift());
while (right.length)
result.push(right.shift());
return result;
}}複製**
時間複雜度:o(n log n);
function quicksort(arr)
var pivotindex=math.floor(arr.length/2);
//找基準,並把基準從原陣列刪除
var pivot=arr.splice(pivotindex,1)[0];
//定義左右陣列
var left=;
var right=;
//比基準小的放在left,比基準大的放在right
for(var i=0;iif(arr[i]<=pivot)
else
}//遞迴
return quicksort(left).concat([pivot],quicksort(right));
}
複製**
var len; //因為宣告的多個函式都需要資料長度,所以把len設定成為全域性變數
function buildmaxheap(arr)
}function heapify(arr, i)
if (right < len && arr[right] > arr[largest])
if (largest != i)
}function swap(arr, i, j)
function heapsort(arr)
return arr;
}複製**
function countingsort(arr, maxvalue)
bucket[arr[i]]++;
}for (var j = 0; j < bucketlen; j++)
}return arr;
}複製**
function bucketsort(arr, bucketsize)
var i;
var minvalue = arr[0];
var maxvalue = arr[0];
for (i = 1; i < arr.length; i++) else
if (arr[i] > maxvalue)
}//桶的初始化
var default_bucket_size = 5; //設定桶的預設數量為5
bucketsize = bucketsize || default_bucket_size;
var bucketcount = math.floor((maxvalue - minvalue) / bucketsize) + 1;
var buckets = new array(bucketcount);
for (i = 0; i < buckets.length; i++)
//利用對映函式將資料分配到各個桶中
for (i = 0; i < arr.length; i++)
arr.length = 0;
for (i = 0; i < buckets.length; i++)
}return arr;
}複製**
var counter = ;
function radixsort(arr, maxdigit)
counter[bucket].push(arr[j]);
}var pos = 0;
for(var j = 0; j < counter.length; j++) }}
}return arr;
}複製**
JS排序演算法
function insertsort arr endif status new date st ms return arr function shellsort arr while increment 1 status new date st ms return arr function shel...
排序演算法(JS)
自己整理一下資料結構的排序演算法,用js寫了一下,測試正確。插入排序 var table 32,26,87,72,26,17 for var i 0 i 0 temp0 alert i table 快速排序 快速排序是找出乙個元素 理論上可以隨便找乙個 作為基準 pivot 然後對陣列進行分割槽操作...
js排序演算法
常見內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排序 堆排序 技術排序等 從第乙個元素開始,該元素被當成已排序 取出下乙個元素,在已排序的元素序列中從後向前掃瞄 如果該元素大於新元素,將該元素移到下一位置 重複3步驟,直到找到已排序的元素小於或者等於新元素,將新元素插入到...