码迷,mamicode.com
首页 > 编程语言 > 详细

某个数组,通过交换使所有奇数都在前半所有偶数都在后半,复杂度O(N)。

时间:2015-04-29 16:59:28      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

function swaping3(A, i, j){
    if((i === j) || (i === j + 1)){
//  if(i >= j){
return; }
//debugger; if(A[i]%2 === 1){ if(A[j]%2 === 1){ swaping3(A, ++i, j); }else{ swaping3(A, ++i, --j); } }else{ if(A[j]%2 === 1){ var temp; temp = A[i]; A[i] = A[j]; A[j] = temp; swaping3(A, ++i, --j); }else{ swaping3(A, i, --j); } } // return A; } function ARR(num, max){ if(arguments.length < 2){ alert("Not enough parameter ~"); return; } var AA = []; for(var i = 0; i<num; i++){ AA.push( Math.ceil(Math.random() * max) ); } return AA; // var i = 0, j = num - 1; // swaping(this.AA, i, j); // return("Swap finished ~") } var OO = new Object(); OO.A = ARR(30, 100); swaping3.call(OO, OO.A, 0, 29);

 

上面是代码,十分简单,下面是执行结果:

 

OO.A = ARR(30, 100);
[85, 70, 44, 100, 37, 81, 97, 89, 67, 7, 73, 5, 83, 41, 33, 96, 80, 93, 73, 59, 89, 42, 27, 15, 49, 26, 81, 10, 62, 95]
swaping3.call(OO, OO.A, 0, 29);
undefined
OO.A
[85, 95, 81, 49, 37, 81, 97, 89, 67, 7, 73, 5, 83, 41, 33, 15, 27, 93, 73, 59, 89, 42, 80, 96, 100, 26, 44, 10, 62, 70]
OO.A = ARR(50, 10000);
[2124, 5000, 5082, 5998, 7476, 962, 5368, 9555, 3593, 5932, 2321, 8518, 2118, 186, 1496, 5914, 1605, 4569, 162, 7487, 4689, 2445, 3122, 8395, 8659, 2368, 1123, 2680, 673, 5098, 3679, 858, 9779, 50, 6818, 823, 8880, 8461, 1496, 942, 2316, 6356, 4691, 2397, 3756, 9451, 3103, 9179, 3108, 9892]
swaping3.call(OO, OO.A, 0, 49);
undefined
OO.A
[9179, 3103, 9451, 2397, 4691, 8461, 823, 9555, 3593, 9779, 2321, 3679, 673, 1123, 8659, 8395, 1605, 4569, 2445, 7487, 4689, 162, 3122, 5914, 1496, 2368, 186, 2680, 2118, 5098, 8518, 858, 5932, 50, 6818, 5368, 8880, 962, 1496, 942, 2316, 6356, 7476, 5998, 3756, 5082, 5000, 2124, 3108, 9892]

 

功能正常~复杂度也满足O(N)~

 

某个数组,通过交换使所有奇数都在前半所有偶数都在后半,复杂度O(N)。

标签:

原文地址:http://www.cnblogs.com/andypeker/p/4466093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!