var arr= [1,3,5,9,2,7,4,6,8]
arr.sort() --默认是从小到大排序
// 冒泡排序 bubbleSort
function sortFun(arr:Array<number>):Array<number>{
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length - i;j++){
let temp
if (arr[j] < arr[j+1]){
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
return arr
}
// 快速排序,quickSort
function quickSort(arr: Array<number>): Array<number> {
let final: Array<number> = new Array(...arr);
function tureQuickSort(arr: Array<number>, left: number, right: number): Array<number> {
if (left >= right) {
return;
}
let i: number = left, j: number = right;
let mark: number = arr[i];
// 用mark作为中间值,将数组左右对半分
while (i < j) {
// 寻找右边比mark更小的
while (i < j && arr[j] >= mark) {
j--;
}
arr[i] = arr[j];
// 寻找左边比mark更大的
while (i < j && arr[i] <= mark) {
i++;
}
arr[j] = arr[i];
}
arr[i] = mark;
// 递归分左右两个子数组
tureQuickSort(arr, left, i - 1);
tureQuickSort(arr, i + 1, right);
}
tureQuickSort(final, 0, final.length - 1);
return final;
}
快速排序:和上面方法一样,但更简洁
function quickSort(array) {
const sort = (arr, left = 0, right = arr.length - 1) => {
if (left >= right) {//如果左边的索引大于等于右边的索引说明整理完毕
return
}
let low = left
let index = right
const baseVal = arr[right] // 取无序数组最后一个数为基准值
while (low < index) {//把所有比基准值小的数放在左边大的数放在右边
//找到一个比基准值大的数交换
while (low < index && arr[low] <= baseVal) {
low++
}
arr[index] = arr[low] // 将较大的值放在右边如果没有比基准值大的数就是将自己赋值给自己(i 等于 j)
while (low < index && arr[index] >= baseVal) { //找到一个比基准值小的数交换
index--
break
}
arr[low] = arr[index] // 将较小的值放在左边如果没有找到比基准值小的数就是将自己赋值给自己(i 等于 j)
}
arr[index] = baseVal // 将基准值放至中央位置完成一次循环(这时候 j 等于 i )
sort(arr, left, index-1) // 将左边的无序数组重复上面的操作
sort(arr, index+1, right) // 将右边的无序数组重复上面的操作
}
sort(array)
return array
}
插入排序是维护一个长度为i的有序序列,每次i自增1,为下标为i的数向前找插入位置。
// 插入排序 insertSort
function insertSort(arr: Array<number>): Array<number> {
let final: Array<number> = new Array(...arr);
for (let i = 1; i < final.length; i++) {
let mark: number = final[i];
let j: number;
// 寻找插入位置
for (j = i - 1; j >= 0; j--) {
if (final[j] < mark) {
// 插入位置找到
break;
} else {
final[j + 1] = final[j];
}
}
// 进行插入操作
final[j + 1] = mark;
}
return final;
}
用typescript实现排序-递增
于 2022-07-22 15:13:47 首次发布