JavaScript寫的幾種排序算法

javscript寫的幾種排序 
最近突然想複習數據結構了,所以就從簡單的排序開始,只要掌握了排序的原理 ,相信變換成任何一種語言都是 小case。 
下面就是js展現的幾種排序 。。。。。。

//冒泡排序
function bubbleSort(arr){
for(let i =0;i<arr.length;i++){
for(let j = 1;j<arr.length-i;j++){
if(arr[j]<arr[j-1]){
let temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
return arr;
}
//直接選擇排序
/*
* 原理:
* 第一次選擇最小的與array[0]交換,第二次選擇和array[1]交換,以此類推
*
* */

function selectSort(arr){
const length = arr.length;
for(let i =0;i<length;i++){
let min = arr[i];//初始默認第一項最小
for(let j =i;j<length;j++){
if(arr[j]<temp){
min = arr[j];
arr[j] = arr[i];
arr[i] = min;

}
}
}
return arr;
}
//插入排序
/*
原理:將數組元素依次插入一個有序隊列當中
* */

function insertSort(arr){
const length = arr.length;
for(let i =1;i<length;i++){
let insertNumber = arr[i];//即將插入的數
for(let j =i;j>0;j--){
if(insertNumber<arr[j-1]&&(j-1)>=0){
arr[j] = arr[j-1];
arr[j-1] = insertNumber;
}
}
}
return arr;

}

//快速排序
/*
原理:
將數組分成兩部分,一邊全是大於一個數,一邊全是小於一個數,利用遞歸,直到一邊數組只有一個數或者沒有
* */

function quickSort(arr){
let left = [];//左邊較小數組
let right = [];//右邊較大數組
let pivot = arr[0];//中間值
if(arr.length==1||arr.length==0){
return arr;//跳出遞歸
}else{
for(let i =1;i<arr.length;i++){
if(arr[i]<pivot){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
}
return quickSort(left).concat(pivot,quickSort(right));//concat連接數組
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章