|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Politov 2:5015/176.18 10 Jan 2002 06:08:52 To : Sergey Popkov Subject : Re: дайте алгоритм, plz! -------------------------------------------------------------------------------- До меня дошли слухи, что *09.01.02* *1:59:43* пролетало сообщение от Sergey к *All* про *"дайте алгоритм, plz!"*. И я решил вмешаться. SP> имеется матрица, пусть 10x10, в которой заложены определеные SP> неповторяющиеся числа (целые числа), причем каждое ичсло в своей ячейке.. SP> необходимо эти числа как бы размешать и поместить в матрицу (в другую, SP> для простоты) случайным образом.. В данном случае лучше матрицу рассматривать как массив, т.е. b: array[1..10,1..10] of integer; a: array[1..100] of integer absolute b; так проще с ней работать. Hу и еще пара d: array[1..10,1..10] of integer; c: array[1..100] of integer absolute d; Т.е. будем все переселять из a в c. сам алгоритм(без инициализации генератора случайных чисел, и п.р. лабудени) с:= a; for i:= 1 to 100 do begin j:= random(i)+1; f=n-i+1; if i<>j then begin //обмен с[f] и с[j] значениями, c[j] помещаем c[f]:= c[f] xor c[j]; //в конец массива, откуда мы его больше не достанем c[j]:= c[f] xor c[j]; c[f]:= c[f] xor c[j]; end; end; Вот и все сложность как не трудно догадаться линейная, и никаких лишних зависаний. Если я нигде с индексами не наглючил. Искренне Ваш Sergey Politov --- WP/95 Rus 1.78 Релиз 1 Reg. * Origin: Человек - побочный продукт любви. (2:5015/176.18) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/39911bce900d.html, оценка из 5, голосов 10
|