常见JS简单算法

快速排序

const myArray = [2, 4, 19, 29, 10, 60, 14];

const quickSort = function(myArray){
    if(myArray.length <= 1) return myArray;
    var pivotIndex = Math.floor(myArray.length/2);           //  取中间值的索引号
    // var pivot = myArray.splice(pivotIndex, 1)[0];  // 阮一峰博客上是这么写的,想了一下,应该就是炫技
    var pivot = myArray[pivotIndex]                     // 这么写也没啥问题·
    // console.log('pivot', pivot);
    let left = [];                             //  创建左区域
    let right = [];                           // 创建右区域
    for( let i = 0; i < myArray.length; i++){
        if(myArray[i] < pivot){
            left.push(myArray[i]);              // 比中间值小的都放左边
        }
        else if(myArray[i] > pivot){
            right.push(myArray[i]);            // 比中间值大的都放右边
        }
    }
    return quickSort(left).concat([pivot], quickSort(right));                  // 递归,然后合并左右区域
}

console.log(quickSort(myArray));

插入排序

/* 插入排序 */
/* 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。 */
let array = [];
void insert_sort(array)
{
    for (i = 1; i < array.length; i++)
    {
        //为a[i]在前面的a[0...i-1]有序区间中找一个合适的位置
        for (j = i - 1; j >= 0; j--)
            if (a[j] < a[i])        // 从这里开始无序,之前均为有序
                break;

        //如找到了一个合适的位置
        if (j != i - 1)
        {
            //将比a[i]大的数据向后移
            let temp = a[i];
            for (k = i - 1; k > j; k--)
                a[k + 1] = a[k];
            //将a[i]放到正确位置上
            a[k + 1] = temp;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值