Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

перетасовка элементов массива без цикла (DizzZ)
Author Message
DizzZ
Участник форума



Joined: 23 Jan 2006
Posts: 154
Карма: 8
   поощрить/наказать


PostPosted: Thu Jul 06, 2006 11:51 pm (написано за 2 минуты 7 секунд)
   Post subject: перетасовка элементов массива без цикла
Reply with quote

Странный, но вполне работоспособный способ перетасовки элементов массива.
Я не сравнивал его по скорости с вариантом на основе цикла.
Code (JavaScript): скопировать код в буфер обмена
mas=[1,2,3,4,5,6,7,8,9,0]
function randomSort(a,b){
return Math.random()-Math.random()
}
mas.sort(randomSort)
alert(mas)
написано просто так, но может кому-то пригодится...
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Jul 07, 2006 12:24 am (спустя 33 минуты; написано за 20 секунд)
   Post subject:
Reply with quote

DizzZ
Тем не менее, по сути он ничем от цикла не отличается :)
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Fri Jul 07, 2006 7:37 am (спустя 7 часов 12 минут; написано за 3 минуты 40 секунд)
   Post subject:
Reply with quote

вполне логично, если почитать описание метода sort
мне понравилось, вот только я бы только сказал, что циклы здесь заданы неявно
ну и что-то вроде
Code (JavaScript): скопировать код в буфер обмена
Array.prototype.sortRandom = function()
{
        return this.sort(function (a, b) { return Math.random() - Math.random(); });
}

var mas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
mas = mas.sortRandom();
Back to top
View user's profile Send private message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Mon Jul 10, 2006 7:17 am (спустя 2 дня 23 часа 40 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «перетасовка элементов массива без цикла (обсуждение)»,
расположенную в форуме Разное :: JavaScript (Пн, 10 Июля 2006, 07:17).
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Fri Nov 13, 2009 8:13 am (спустя 3 года 4 месяца 2 дня 56 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «Сортировка массива, с перемещением сразу нескольких элементов»,
расположенную в форуме Разное :: JavaScript (13 Ноября 2009, 11:13).
Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 24
   поощрить/наказать


PostPosted: Sat Oct 23, 2010 1:01 am (спустя 11 месяцев 9 дней 16 часов 47 минут; написано за 44 секунды)
   Post subject:
Reply with quote

Полагаю, можно чуть упростить
Code (JavaScript): скопировать код в буфер обмена
return Math.random() - .5;
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Thu Apr 21, 2011 2:50 pm (спустя 5 месяцев 29 дней 13 часов 48 минут; написано за 2 минуты 15 секунд)
   Post subject:
Reply with quote

Проверил функции из-под Firebug (в закладке "Наблюдение") - ужаснулся: рандомизация неравномерна, особенно в конце массива, типа такой:
Code (any language): скопировать код в буфер обмена
990        761       
991        565       
992        762       
993        567       
994        564       
995        763       
996        765       
997        767       
998        764       
999        766
.
Хотел уже написать на форум, но перепроверил на отдельной HTML-странице, все работает ОК:
Code (any language): скопировать код в буфер обмена
969, 616, 414, 756, 959, 489, 373, 82, 911, 69, 903, 594, 948, 863, 124, 862, 47, 241, 276, 155, 636, 365, 797, 974, 889, 90, 957, 101, 460, 54, 170, 432, 865, 648, 887, 100, 342, 463, 540, 214, 299, 228, 12, 823, 995, 615, 853, 233, 418, 971, 273, 938, 484, 816, 485, 992, 859, 409, 408, 926, 429, 327, 216, 94, 105, 578, 158, 125, 633, 34, 894, 898, 851, 605, 567, 338, 528, 849, 965, 477, 506, 891, 361, 530, 800, 280, 357, 652, 927, 559, 417, 535, 989, 252, 6, 77, 688, 632, 5, 760, 824, 156, 864, 819, 919, 308, 474, 641, 629, 439, 592, 60, 493, 695, 882, 685, 347, 523, 896, 26, 189, 310, 355, 883, 501, 486, 970, 498, 930, 946, 452, 978, 248, 36, 312, 403, 846, 430, 258, 753, 381, 422, 175, 542, 420, 758, 339, 402, 960, 182, 586, 46, 326, 307, 31, 655, 78, 673, 662, 798, 795, 104, 329, 76, 608, 904, 59, 792, 890, 925, 88, 640, 269, 623, 741, 686, 715, 128, 525, 488, 639, 656, 508, 922, 749, 783, 981, 45, 627, 577, 319, 987, 988, 553, 67, 694, 590, 454, 379, 709, 85, 367, 799, 606, 658, 50, 646, 290, 696, 972, 223, 690, 591, 908, 143, 196, 892, 238, 232, 266, 20, 74, 580, 173, 637, 112, 997, 191, 664, 122, 271, 886, 138, 16, 735, 626, 197, 231, 382, 581, 451, 519, 282, 315, 596, 144, 14, 63, 778, 897, 848, 866, 471, 867, 114, 678, 9, 186, 625, 570, 193, 283, 21, 340, 438, 772, 976, 110, 163, 263, 638, 459, 230, 666, 311, 277, 265, 64, 334, 127, 457, 145, 956, 139, 598, 805, 84, 874, 873, 391, 600, 888, 916, 447, 377, 404, 994, 921, 58, 495, 171, 351, 942, 306, 116, 15, 102, 929, 383, 41, 726, 181, 396, 359, 499, 825, 841, 689, 767, 397, 374, 784, 119, 785, 739, 56, 318, 717, 390, 298, 153, 787, 272, 933, 871, 513, 642, 991, 419, 476, 920, 406, 421, 18, 40, 368, 378, 130, 423, 297, 172, 552, 740, 387, 834, 400, 242, 895, 288, 588, 511, 691, 154, 731, 831, 13, 806, 878, 952, 249, 680, 285, 893, 752, 936, 426, 7, 817, 745, 70, 444, 794, 473, 256, 621, 906, 43, 610, 2, 716, 885, 781, 29, 546, 222, 573, 286, 708, 649, 762, 617, 954, 349, 93, 246, 22, 146, 279, 624, 706, 516, 537, 736, 811, 868, 611, 533, 436, 677, 372, 385, 983, 140, 331, 503, 464, 979, 278, 620, 294, 902, 245, 399, 17, 779, 928, 165, 211, 563, 389, 221, 812, 371, 0, 558, 836, 564, 370, 346, 526, 973, 49, 555, 304, 204, 718, 267, 635, 317, 44, 944, 534, 210, 337, 619, 907, 475, 369, 109, 826, 821, 332, 514, 200, 807, 687, 595, 129, 684, 187, 742, 675, 665, 364, 469, 71, 522, 565, 520, 932, 87, 645, 881, 877, 539, 562, 353, 845, 108, 744, 721, 235, 323, 809, 571, 918, 37, 234, 733, 164, 500, 192, 775, 407, 487, 219, 162, 325, 879, 472, 412, 398, 386, 208, 111, 207, 253, 227, 159, 527, 935, 28, 293, 975, 441, 180, 763, 729, 803, 702, 754, 490, 855, 411, 507, 68, 465, 461, 838, 217, 768, 943, 257, 707, 837, 985, 872, 48, 672, 268, 468, 833, 804, 132, 654, 81, 764, 628, 757, 790, 366, 766, 773, 505, 169, 583, 774, 142, 336, 676, 333, 38, 856, 363, 949, 622, 27, 91, 531, 188, 765, 255, 160, 261, 453, 815, 587, 704, 915, 275, 630, 292, 700, 80, 309, 963, 456, 190, 395, 220, 650, 854, 727, 692, 661, 149, 25, 95, 604, 236, 751, 481, 183, 150, 73, 218, 958, 900, 725, 79, 554, 300, 121, 313, 405, 380, 653, 229, 295, 999, 321, 415, 350, 260, 1, 556, 843, 335, 434, 136, 589, 585, 813, 912, 446, 980, 123, 437, 330, 951, 870, 703, 343, 250, 599, 491, 134, 302, 107, 141, 185, 166, 135, 521, 72, 177, 65, 737, 341, 857, 711, 239, 967, 33, 647, 917, 962, 602, 858, 557, 786, 212, 548, 953, 593, 462, 176, 324, 923, 10, 713, 431, 730, 23, 681, 394, 352, 103, 113, 990, 659, 240, 167, 413, 270, 425, 152, 356, 950, 424, 579, 305, 712, 909, 262, 42, 137, 115, 939, 820, 504, 723, 532, 358, 168, 789, 237, 133, 550, 832, 614, 618, 92, 755, 572, 53, 941, 750, 777, 131, 905, 998, 724, 705, 201, 940, 161, 345, 551, 512, 287, 722, 796, 651, 842, 576, 52, 518, 11, 157, 3, 151, 39, 880, 225, 793, 937, 194, 671, 808, 174, 977, 51, 75, 202, 416, 818, 198, 780, 203, 470, 455, 480, 660, 732, 376, 884, 734, 993, 291, 467, 541, 195, 392, 770, 984, 835, 354, 384, 443, 316, 259, 466, 97, 213, 296, 801, 106, 657, 899, 810, 748, 184, 544, 244, 206, 861, 955, 264, 497, 844, 876, 178, 860, 643, 840, 747, 566, 478, 303, 945, 961, 509, 822, 634, 982, 693, 375, 613, 683, 584, 924, 120, 847, 458, 850, 697, 199, 515, 612, 869, 61, 348, 492, 569, 428, 281, 852, 98, 668, 743, 549, 215, 827, 597, 644, 720, 669, 55, 243, 118, 494, 4, 274, 670, 96, 448, 360, 510, 663, 759, 545, 769, 450, 575, 791, 224, 247, 496, 964, 609, 19, 771, 830, 931, 301, 776, 24, 410, 679, 543, 761, 251, 226, 502, 147, 30, 314, 126, 8, 32, 947, 966, 603, 574, 746, 344, 89, 538, 728, 289, 839, 674, 631, 968, 99, 57, 320, 83, 393, 433, 901, 62, 179, 536, 829, 561, 682, 86, 698, 322, 802, 328, 560, 701, 913, 607, 738, 440, 362, 449, 479, 209, 427, 388, 401, 483, 601, 524, 710, 435, 442, 875, 699, 714, 986, 667, 582, 529, 117, 35, 814, 568, 254, 482, 934, 148, 828, 719, 66, 914, 547, 445, 205, 910, 782, 284, 996, 517, 788
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML