Skip to content

Commit dcd16d2

Browse files
committed
add array_sorting
1 parent 5ec750d commit dcd16d2

9 files changed

+176
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function binaryInsertionSort(array){
2+
let l, r, m, x;
3+
for(let i = 1; i < array.length; i++){
4+
l = 0;
5+
r = i - 1;
6+
x = array[i];
7+
8+
while(l <= r){
9+
m = Math.floor((l + r) / 2);
10+
if(array[m] > x) r = m - 1;
11+
else l = m + 1;
12+
}
13+
14+
for(let j = i; j > l; j--)
15+
array[j] = array[j - 1];
16+
array[l] = x;
17+
}
18+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function bubbleSort(array){
2+
for(let i = 0; i < array.length - 1; i++){
3+
for(let j = array.length - 1; j > i; j--){
4+
if(array[j] < array[j-1]){
5+
let t = array[j];
6+
array[j] = array[j - 1];
7+
array[j - 1] = t;
8+
}
9+
}
10+
}
11+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function heapify(array, N, i){
2+
let left = 2*i + 1, right = 2*i + 2, largest;
3+
4+
if(left < N && array[left] > array[i]) largest = left;
5+
else largest = i;
6+
7+
if(right < N && array[right] > array[largest]) largest = right;
8+
9+
if(largest != i) {
10+
let t = array[i];
11+
array[i] = array[largest];
12+
array[largest] = t;
13+
heapify(array, N, largest);
14+
}
15+
}
16+
17+
function buildHeap(array){
18+
let m = Math.floor(array.length / 2 - 1);
19+
for(let i = m; i >= 0; i--)
20+
heapify(array, array.length, i);
21+
}
22+
23+
function heapSort(array){
24+
buildHeap(array);
25+
26+
for(let i = array.length - 1; i >= 0; i--) {
27+
let t = array[0];
28+
array[0] = array[i];
29+
array[i] = t;
30+
31+
heapify(array, i, 0);
32+
}
33+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function insertionSort(array){
2+
let pos, x;
3+
for(let i = 1; i < array.length; i++){
4+
pos = i - 1;
5+
x = array[i];
6+
while(pos >= 0 && array[pos] > x){
7+
array[pos + 1] = array[pos];
8+
pos--;
9+
}
10+
array[pos + 1] = x;
11+
}
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function interChangeSort(array){
2+
for(let i = 0; i < array.length - 1; i++){
3+
for(let j = i + 1; j < array.length; j++){
4+
if(array[j] < array[i]){
5+
let t = array[i];
6+
array[i] = array[j];
7+
array[j] = t;
8+
}
9+
}
10+
}
11+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function merge(array, left, m, right){
2+
let l = left, r = m + 1;
3+
let tmp = [];
4+
5+
while(l <= m && r <= right){
6+
if(array[l] < array[r]) tmp.push(array[l++]);
7+
else tmp.push(array[r++]);
8+
}
9+
10+
while(l <= m) tmp.push(array[l++]);
11+
while(r <= right) tmp.push(array[r++]);
12+
13+
for(let i = 0; i < tmp.length; i++)
14+
array[i + left] = tmp[i];
15+
}
16+
17+
function mergeSort(array, left, right){
18+
if(left < right){
19+
let m = Math.floor((left + right) / 2);
20+
mergeSort(array, left, m);
21+
mergeSort(array, m + 1, right);
22+
merge(array, left, m, right);
23+
}
24+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function quickSort(array, left, right){
2+
let l = left, r = right;
3+
let m = Math.floor((l + r) / 2);
4+
let pivot = array[m];
5+
6+
while(l <= r){
7+
while(array[l] < pivot) l++;
8+
while(array[r] > pivot) r--;
9+
if(l <= r){
10+
let t = array[l];
11+
array[l] = array[r];
12+
array[r] = t;
13+
l++;
14+
r--;
15+
}
16+
}
17+
18+
if(l < right) quickSort(array, l, right);
19+
if(r > left) quickSort(array, left, r);
20+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function selectionSort(array){
2+
for(let i = 0; i < array.length - 1; i++){
3+
let idmin = i;
4+
for(let j = i + 1; j < array.length; j++){
5+
if(array[j] < array[idmin]) idmin = j;
6+
}
7+
8+
// swap
9+
let t = array[i];
10+
array[i] = array[idmin];
11+
array[idmin] = t;
12+
}
13+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
function shakerSort(array){
2+
let left, right, k;
3+
4+
left = 0;
5+
right = array.length - 1;
6+
k = array.length - 1;
7+
8+
while(left < right)
9+
{
10+
for(let j = right; j > left; j--)
11+
{
12+
if(array[j] < array[j - 1])
13+
{
14+
let t = array[j];
15+
array[j] = array[j - 1];
16+
array[j - 1] = t;
17+
k = j;
18+
}
19+
}
20+
left = k;
21+
22+
for (let j = left; j < right; j++)
23+
{
24+
if (array[j] > array[j + 1])
25+
{
26+
let t = array[j];
27+
array[j] = array[j + 1];
28+
array[j + 1] = t;
29+
k = j;
30+
}
31+
}
32+
right = k;
33+
}
34+
}

0 commit comments

Comments
 (0)