美文网首页
不积跬步之选择排序

不积跬步之选择排序

作者: 雨飞飞雨 | 来源:发表于2021-05-28 12:21 被阅读0次

选择排序

假如我们有一组歌的数据,我们需要按照播放量从大往小排序。
最简单的做法就是,先从这组数据里找到最大的那个,然后把它拿出来,放到另一个数组里,接着再在这个数据里找到最大的那个,拿出来,放到另一个数组里,直到全部走完。

看代码。

//查找最大的元素
const findElement = (arr)=>{

    let small_index =  -1 ;//存储最大的值的索引
    if(Array.isArray(arr) && arr.length>0){
        let small_value = arr[0]; //存储最大的值
        small_index = 0;
        for(let i = 1;i<arr.length ; i++){
            let value = arr[i];
            if(value > small_value){
                small_value = value;
                small_index = i;
            }
        }
    }
    return small_index;
};

//选择排序数组
const sortArray = (array)=>{
    let sort_array = [];
    if(Array.isArray(array) && array.length > 0){
        let length = array.length;

        for(let i = 0;i<length;i++){ //这样写是为了遍历到所有元素,因为里面会设计删除数组
            let small_index = findElement(array);
            let small_value = array.splice(small_index,1)[0]; //删除元素并返回一个数组,所以取值

            sort_array.push(small_value)
        }
    }
    return sort_array;
}

const array = sortArray([1,5,8,11,4,3,99,7]);
console.log(array);
//[ 99, 11, 8, 7, 5, 4, 3, 1 ]

可以看到我们的选择排序使用了两个for循环,时间复杂度O(n*n)

相关文章

  • 不积跬步之选择排序

    选择排序 假如我们有一组歌的数据,我们需要按照播放量从大往小排序。最简单的做法就是,先从这组数据里找到最大的那个,...

  • 不积跬步之快速排序

    快速排序使用了分治思想来实现。 和冒泡排序一样,快速排序也属于交换排序,通过元素直接的比较和交换位置来达到排序的目...

  • 不积跬步之冒泡排序及优化

    冒泡排序 一句话描述:相邻的两个元素相比较,大的那个移动到右侧,然后进行数组长度-1轮后,就排好序了。 冒泡排序的...

  • 不积跬步之鸡尾酒排序

    鸡尾酒排序是从冒泡排序又优化升级而来。比如如下场景: 如果使用冒泡排序,因为只需要移动1这一个位置,却需要轮回8次...

  • 不积跬步之计数排序

    之前的排序都是通过比较来完成的,例如冒泡排序和快速排序。 两个值比较,如果大的值,就交换。 而计数排序则是利用里字...

  • 不积跬步

    2018/10/25 星期四 晴 没想到二姐的高价小收音机比手机的辐射要强,放在床边睡觉,...

  • 不积跬步

    “不积跬步无以至千里”常用来激励。 可在自己身上发掘这句名言,却只有垃圾、肥肉和慢。 一个上午,断断续续收拾了两个...

  • 不积跬步

    生活中看起不起眼的事情,对一些人来说就是财富机遇 朋友在我们单位上班,也属于从别的单位挖过来的,老板慧眼识珠,两人...

  • 点滴积累成就精彩演讲

    冰冻三尺,非一日之寒。 ——王充不积跬步,无以...

  • 晨间日记

    不登高山,不知天之高也; 不临深溪,不知地之厚也。 不积跬步,无以至千里; 不积小流,无以成江海。 ​​​

网友评论

      本文标题:不积跬步之选择排序

      本文链接:https://www.haomeiwen.com/subject/lbkssltx.html