TOP
|
剑指offer:调整数组顺序使奇数位于偶数前面(三)
bsp;
| |
1 |
7 |
3 |
4 |
5 |
6 |
2 |
8 |
|
↑ |
|
|
|
|
↑ |
|
|
i |
|
|
|
|
j |
|
i和j继续扫描,i遇到4停止,j遇到5停止,交换两处的值:
继续扫描,此时,i和j交错,扫描结束:
基于该思路的算法时间复杂度为O(n),空间复杂度为O(1),C语言代码实现如下:
运行效率比较
编译后,对一百万数据进行操作,运行时间结果如下。 解法一:
$ time ./reorder 1000000
并没有耐心等到结果出来。 解法二:
$ time ./reorder1 100000000 reorder for 100000000 numbers before reorder:too much,will not print after reorder:too much,will not print
real 0m2.425s user 0m2.141s sys 0m0.284s
对1亿数据进行操作,耗时很短,只是内存占用较多。 解法三:
$ time ./reorder2 100000000 reorder for 100000000 numbers before reorder:too much,will not print after reorder:too much,wil
|