点击此处返回总目录
一、长度为len的数组元素刚好为1-n,对数组进行排序。 【题目】 比如数组:[10,6,9,5,2,8,4,7,1,3] 希望得到:[1,2,3,4,5,6,7,8,9,10]
【分析】 对于一般的数组,排序要花nlogn的时间。 但是,如果一个数组,长度为n。元素刚好是1~n。对这n个数排序,可以在o(n)时间内完成。 代码如下: for(int i = 0 ;i<nums.length;i++){ while(nums[i] != i+1){ swap(nums[i], nums[nums[i]-1]); } }
比如: [10,6,9,5,2,8,4,7,1,3 ] //a[0]!=1。把10和3交换 |
一个数组的元素为1~n,在o(n)的时间内对数组排序
最新推荐文章于 2021-08-23 16:20:52 发布