1. 氣泡排序(bubble sort)
基本思想
比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個的位置。演算法實現:依次比較相鄰元素,從開始第一對到結尾的最後一對。比較一遍後,最後的元素為最大的數。
再對除了最後乙個元素以外所有的元素重複以上的步驟,直到全部排序完成。
// 定義交換函式
function
swap
(arrs, p1, p2)
function
bubblesort
(arrs)}}
}let arrs1 =[2
,1,4
,3,6
,5];
sort
(arrs1)
; console.
log(
json
.stringify
(arrs1)
);
排序結果:
2. 選擇排序(selection sort)
基本思想
先預設下標為0的數為最小元素,遍歷陣列與之比較,如果遇到更小的數,獲取更小值的索引…這樣完成一次遍歷後,拿到最小值的索引;演算法實現:重複以上步驟,從第二位開始比較,拿到第二小的值,放到下標為2的位置…直至遍歷完成。
// 定義交換函式
function
swap
(arrs, p1, p2)
function
selectionsort
(arrs)
}// 如果當前位置不是最小值,將其換為最小值
if(i !== min)
}return arrs;
}
3. 插入排序(insertion sort)
基本思想
將陣列分成「已排序」和「未排序」兩部分,預設第乙個元素已排序完成;演算法實現:迴圈過程中,將「未排序」元素與「已排序」部分的最後一位比較,若比其大,則對下乙個「未排序」元素進行排序;
如果「未排序」元素比「已排序」元素最後一位小,則與最後一位元素的前一位比較,並且同時將對比過的「已排序」元素向後覆蓋。
function
insertsort
(arrs)
arrs[j]
= arrs[j-1]
;// 將前乙個數複製到後乙個數上
} arrs[j]
= temp;
// 找到考察的數應處於的位置
}return arrs;
}
4. 快速排序(quick sort)
基本思想
任意選取乙個資料作為關鍵資料,然後將所有比它小的數都放到它左邊,所有比它大的數都放到它右邊,這個過程稱為一趟快速排序。演算法實現:
function
quicksort
(array)
let i = left
let j = right
const baseval = arr[j]
// 取無序陣列最後乙個數為基準值
while
(i < j)
arr[j]
= arr[i]
// 將較大的值放在右邊如果沒有比基準值大的數就是將自己賦值給自己(i 等於 j)
while
(j > i && arr[j]
>= baseval)
arr[i]
= arr[j]
// 將較小的值放在左邊如果沒有找到比基準值小的數就是將自己賦值給自己(i 等於 j)
} arr[j]
= baseval // 將基準值放至**位置完成一次迴圈(這時候 j 等於 i )
sort
(arr, left, j -1)
// 將左邊的無序陣列重複上面的操作
sort
(arr, j +
1, right)
// 將右邊的無序陣列重複上面的操作
}const newarr = array.
concat()
// 為了保證這個函式是純函式拷貝一次陣列
sort
(newarr)
return newarr
}
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步驟,直到找到已排序的元素小於或者等於新元素,將新元素插入到...