排序
作者:互联网
对该数组从小到大进行排序
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