排序———冒泡排序

一、冒泡排序

       这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。

      它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
 var arr=[5,6,8,3,5,12,4];
    var bigarr;
    var j;
    for(var i=0;i<arr.length;i++){           //外循环遍历数组的每一项
        for(var j=i+1;j<arr.length;j++){     //内循环则用于比较元素
            if(arr[i]>arr[j]){
                bigarr=arr[i];
                arr[i]=arr[j];
                arr[j]=bigarr;
            }
        }
    }
    console.log(arr);     //[3, 4, 5, 5, 6, 8, 12]

 二、选择排序

是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。(从小到大);

步骤如下:

1.从数组的开头起,将第一个元素和其他所有元素都进行一次比较,选择出最小的元素放在数组的第一个位置。

2.然后再从第二个元素开始,将第二个元素和除第一个之外的所有元素进行一次比较,选择出最小的元素放在数组的第二个位置。

3.对后面的第三,第四……的元素分别重复上面的步骤,知道所有的数据完成排序。

 var arr=[5,6,8,3,5,12,4];
var minindex; //定义一个变量,保存最小值 for(var i=0;i<arr.length;i++){ minindex=i; for(var j=i+1;j<arr.length;j++){ //将第一个元素和其他所有元素都进行一次比较,发现小的就保存在minnindex,,知道j循环完,,把minindex和i的值调换; if(arr[j]<arr[minindex]){ //注意这儿是minindex,不能是i minindex=j; } } if(minindex!=i){ var temp=arr[i] arr[i]=arr[minindex]; arr[minindex]=temp; } }
扫描二维码关注公众号,回复: 1755544 查看本文章

猜你喜欢

转载自www.cnblogs.com/yongyang/p/9224627.html