``
var a = [1, 3, 6, 3, 23, 76, 1, 34, 222, 6, 456, 221];
// 冒泡排序 通过双循环2 2 比较更换位置进行排序
function pop(arr) {
const arr1 = arr;
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < i; j++) {
if (arr1[i] < arr1[j]) {
const temp = arr1[j];
arr[j] = arr1[i];
arr[i] = temp;
}
}
}
return arr1;
}
// 快速排序
/**
* 选确定数组长度
* 取中间基数作为参考目标,设置左右2边空数组
* 循环原数组和基数进行比较
* 递归并合并左右2边数组
* **/
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const j = Math.floor(arr.length / 2);
const infoNum = arr.splice(j, 1)[0];
const left = [];
const right = [];
arr.map((item) => {
if (item > infoNum) {
right.push(item);
} else {
left.push(item);
}
});
return quickSort(left).concat(infoNum, quickSort(right));
}
// 插入排序
/**
* 设置一个变量记录状态,一个空数组负责存排序后的数据
* 未排序和排序的数组进行循环比较,把旧数组中的每一项都和新数组进行比较,
* 如果比其中某一项小就插入当前位置
* 如果没有就插入最后的位置
* */
function insertSort(arr) {
const temp = [];
for (let i = 0; i < arr.length; i++) {
let flag = false;
for (let j = 0; j < temp.length; j++) {
if (arr[i] < temp[j]) {
temp.splice(j, 0, arr[i]);
flag = true;
break;
}
}
if (!flag) {
temp.push(arr[i]);
}
}
return temp;
}
// 选择排序
/**
* 设置一个变量临时存储数据,一个变量记录最小数据位置
* 循环 用第二个数据和第一个数据进行比较 如果小于等于这个元素就把位置记录
* 变量 temp 赋值成当前循环的元素 当前元素赋值成最小元素 最小元素赋值成当前元素
* 这样交换位置
*/
function selectSort(arr) {
let temp;
let minIndex;
for (let i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] <= arr[minIndex]) {
minIndex = j;
}
}
temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
}
return arr
}