2.选择排序

原理:每一圈确定出一个当前最小的元素,然后跟最前面的元素交换位置。
已经比较出来的最小元素,不用再参与后面的循环。
比如:第一圈确定出来的跟第一交换位置。
第二圈确定出来的跟第二交换位置。
外圈负责整个数组比较的次数;
内圈负责每个元素之间的比较;

内圈比较时候的起始位置
i=>0 1 2...
i=>1 2 3...
所以内圈循环的起始位置应该是j=i+1;

//内圈的结束位置
//由于内圈循环时,每次都要对比到最后一个元素,所以j<arr.length
//要求生成一个10个元素的随机数数组,随机数取值范围(1-100)
[图片上传失败...(image-76a9f8-1648866193958)]

     //声明一个空数组
    var arr1 = [];
      for(var i =0;i<10;i++){
     arr1[i]=Math.round(Math.random()*100);
     }
       console.log(arr1);

    //排序
    //外圈控制整个数组循环的次数
    for(i=0;i<arr.length-1;i++){
    //外圈每一次开始循环的时候,都将当前循环的第一个元素,先假设为最小的元素,然后拿着这个元素跟内圈循环的其他元素做对比,如果有元素比min更小,那么这个元素就是新的min
    var min = i;
    //内圈控制元素之间的对比
    for(j=i+1;j<arr.length;j++){
    if(arr[j]<arr[min]){
      min = j;
       }
    }
    //因为一整个圈比完之后才会换位置,所以在外层for循环换位置
    //将确定出来的min跟当前参与循环的第一个元素换位置
    var num = arr[i];
    arr[i] = arr[min];
    arr[min] = num;
    }
    console.log(arr);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原理 每一圈确定出一个当前最小的元素,然后跟最前面的元素交换位置 已经比较出来的最小元素,不用在参与后面的循环 比...
    25_1867阅读 832评论 0 0
  • 第一章、 算法简介 一些常见的大O运行时间 》 O(log n),也叫对数时间,这样的算法包括二分查找。》 O(...
    时间之友阅读 3,919评论 0 0
  • 数组: 数组带来的问题: 额外请求的数组储存空间,请求的位数少不够用,请求的位数多如果用不到会浪费。数组 速度方面...
    简默丶XS阅读 3,800评论 0 0
  • 选择排序 算法描述首先在数组中选择第一个元素,默认第一个就是最小的,然后再跟后边的元素做对比,如果遇到比它小的,就...
    熙攘_ym阅读 806评论 0 0
  • 1.冒泡排序 2.选择排序 选择排序原理:每一圈确定出一个当前最小的元素,然后跟最前面的元素交换位置,已经比较出来...
    刘烨_9901阅读 1,878评论 0 0