JS排序演算法

2021-09-11 14:59:51 字數 3211 閱讀 9344

時間複雜度: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步驟,直到找到已排序的元素小於或者等於新元素,將新元素插入到...