这个问题在我找工作期间,面试题中出现过,后来还专门整理了面试题,其实很简单。但是在项目中遇到这个问题的时候居然还是想不出来思路(打脸,piapiapia)在这里还是整理一下比较好。以后再遇到的时候别再不会了哦!!!!
假设有一个数组A(咦,怎么老是它)值为【29,14,7,100,20】,如果我们将它降序,最终的结果应该是【100,29,20,14,7】,这里数组的长度为5
然后说一下思路吧。
先取数组A的第一位的数值也就是A[0],值为29,然后跟第二位数(14)进行比较,如果第一位比第二位大就continue,如果第一位比第二位小就交换两个值的顺序。很显然这里是前者。
然后第二位和第三位比较,显然跟第一次比较结果一样。
然后就是第三位(7)和第四位(100)比较,这里就是规则的后者了,这里就需要将7和100交换位置,数组A就变成了【29,14,100,7,20】
继续比较第四位(7)和第五位(20)比较,这里还是需要交换位置,变成了【29,14,100,20,7】,这里就可以看到最小的数值(7)已经在数组的最后了
第一轮比较结束,然后就是第二轮,第二轮要注意的地方是:只比较数组的前4位(因为在第一轮的时候已经将最小的值放到了最后)。然后就是一次推了,推到第4轮的时候就可以得到我们想要的数组了。
第一轮比较 第二轮比较第二轮比较过后,倒数第二大的数(14)也就到了它该到的位置了。然后我们看下代码:
执行结果:
嗯,这样的思路还是要有的。另外补充一个数组倒序的方法:Array.reverse()
下面是2017年的补充:
数组的sort()方法:从数组上对数组进行排序
网友评论