其他分享
首页 > 其他分享> > 排序

排序

作者:互联网

对该数组从小到大进行排序


1.冒泡排序

从第一位开始,相邻的两个数进行比较。如果前面的数比后面的数大,则两个数交换位置。排序的过程如下图所示。

排序的次数为nums.length-1。

第一次排序确定整个数组最后一位,比较了nums.length-1次;

第二次排序是在第一位到倒数第二位的数中确定最后一位,即确定整个数组倒数第二位,比较了nums.length-2次

以此类推,最后一次排序是在第一位到第二位中确定最后一位,即确定整个数组的第二位,比较了1次。

从第二位到最后一位都排好了序,这就是冒泡排序的过程。

用代码展示这个过程如下图

可以发现,每次都是for循环的条件表达式有规律的发生改变,优化一下代码后,冒泡排序的代码如下

   for(var j=nums.length-1; j>0; j--){         for(var i=0; i<j; i++){             if(nums[i]>nums[i+1]){                   var temp = nums[i+1];                 nums[i+1] =nums[i];                 nums[i] = temp;              }         }         console.log(nums)     }


 2.选择排序

将第一个数与后面的数作比较,如果其他的数比第一位数小,则与第一位数交换位置。将第二位数与后面的数比较交换位置,依次类推到倒数第二位数,排序的过程如下图。

排序的次数为nums.length-1。

第一次排序确定整个数组第一位,比较了nums.length-1次;

第二次排序是在第二位到最后一位的数中确定第一位,即确定整个数组第二位,比较了nums.length-2次

以此类推,最后一次排序是在倒数第二位到最后一位中确定第一位,即确定整个数组的倒数第二位,比较了1次。

从第一位到倒数第二位都排好了序,这就是选择排序的过程。

用代码展示这个过程如下图

 

可以发现,每次都是for循环的单次表达式和if里面用来确定位数的索引有规律的发生改变,优化一下代码后,选择排序的代码如下

for(j=1; j<nums.length; j++){
    for(var i=j; i<nums.length; i++){
        if(nums[j-1]>nums[i]){
            var temp = nums[j-1];
            nums[j-1] = nums[i];
            nums[i] = temp;
        }
    }
    console.log(nums);
}


 

标签:第一位,nums,确定,length,第二位,排序
来源: https://www.cnblogs.com/xiaomaju/p/15247616.html