Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: как программировать бинарнаю дереву на VBasic Добавлено: 23.01.09 13:35  

Автор вопроса:  Шавкат

Ответить

  Ответы Всего ответов: 25  

Номер ответа: 16
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #16 Добавлено: 25.01.09 15:52
Arseny пишет:
А как может выглядеть парень с деревянной сортировкой?

Включи воображение :) Тока Буратино оставь в покое...

Arseny, мир полон недоразумений, в которых русский язык по прежнему иностранный.

Ответить

Номер ответа: 17
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #17 Добавлено: 25.01.09 22:31
Smith пишет:
мир полон недоразумений, в которых русский язык по прежнему иностранный
 

Наша святая обязанность это искоренить! Пора сменить кодировку в компьютерах Пентагона!!! :-D

Ответить

Номер ответа: 18
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #18 Добавлено: 28.01.09 13:02
Ну и гмр. Я для сортировки использую Excel в скрытом виде и всем доволен пока.

Ответить

Номер ответа: 19
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #19 Добавлено: 28.01.09 13:10
GDK пишет:
Я для сортировки использую Excel в скрытом виде и всем доволен пока.

 

..пока не поставишь прогу на комп с опенофисом.

Ответить

Номер ответа: 20
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #20 Добавлено: 28.01.09 17:58
или вообще без оного :) боюсь в таком случае он будет вынужден включить эксель в свой маленький дистрибутивчик :)))))

Ответить

Номер ответа: 21
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #21 Добавлено: 28.01.09 20:30
Всем известный алгоритм Хоара занимает несколько строк, числа сортирует быстрее, чем Excel, строки чуть медленнее. И это в нашей IDE. GDK, рекомендую.
  1. Dim X, Y, A()
  2. Sub QuickSort(ByVal LBound_A As Long, ByVal UBound_A As Long)
  3. Dim I As Long, J As Long
  4. I = LBound_A: J = UBound_A: X = A((LBound_A + UBound_A) \ 2)
  5. Do
  6.   While A(I) < X: I = I + 1: Wend: While X < A(J): J = J - 1: Wend 'по возрастанию
  7. '  While A(I) > X: I = I + 1: Wend: While X > A(J): J = J - 1: Wend 'по убыванию
  8.   If I <= J Then Y = A(I): A(I) = A(J): A(J) = Y: I = I + 1: J = J - 1
  9. Loop Until I > J
  10. If LBound_A < J Then QuickSort LBound_A, J
  11. If I < UBound_A Then QuickSort I, UBound_A
  12. End Sub

Ответить

Номер ответа: 22
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #22 Добавлено: 29.01.09 17:04
Ну - это вопрос удобства. Я просто предложил. Может не предполагается исп. прогу на компах без нормального офиса. Рекомендацию заценил. Только вот массивчик то одномерный, а если надо двумерный сортировать? Ну всё же кому как удобнее и у кого какие цели.

Ответить

Номер ответа: 23
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #23 Добавлено: 29.01.09 18:44
Двумерный? - пожалуйста. А теперь попробуйте 100000 Rows отсортировать в ёкселе!
  1. Dim X1, X2, Y, A2(1 To 100000, 1 To 2)
  2. Sub QuickSort2(ByVal L As Long, ByVal U As Long)
  3. Dim I As Long, J As Long
  4. I = L: J = U
  5. X1 = A2((L + U) \ 2, 1)
  6. X2 = A2((L + U) \ 2, 2)
  7. Do
  8.   While A2(I, 1) < X1 Or (A2(I, 1) = X1 And A2(I, 2) < X2): I = I + 1: Wend
  9.   While X1 < A2(J, 1) Or (X1 = A2(J, 1) And X2 < A2(J, 2)): J = J - 1: Wend
  10.   If I <= J Then
  11.     Y = A2(I, 1): A2(I, 1) = A2(J, 1): A2(J, 1) = Y
  12.     Y = A2(I, 2): A2(I, 2) = A2(J, 2): A2(J, 2) = Y
  13.     I = I + 1: J = J - 1
  14.   End If
  15. Loop Until I > J
  16. If L < J Then QuickSort2 L, J
  17. If I < U Then QuickSort2 I, U
  18. End Sub
  19. Sub QuickSort2_Example()
  20. Dim I As Long
  21. Randomize
  22. For I = 1 To 100000
  23.   A2(I, 1) = Int(Rnd * 256)
  24.   A2(I, 2) = Rnd * 100000
  25. Next I
  26. QuickSort2 1, 100000
  27. For I = 1 To 100000: Debug.Print A2(I, 1), A2(I, 2): Next I
  28. End Sub

Думаю, вряд ли нужно объяснять как сортировать по 3 и более ключам, аскенд или дескенд по любому из них.

Ответить

Номер ответа: 24
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #24 Добавлено: 30.01.09 12:46
100000. Ну да. Пасиб за код. Разобраться попробую. Просто стараюсь пользоваться только For Next, не объявлять несколько переменных в одной строке, и не пойму про ":" (не использовал такой синтаксис). Ну, если гром грянет, думаю сумею правильно перекреститься. Может в чём то и не прав. Не зря же эти конструкции придуманы.

Ответить

Номер ответа: 25
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #25 Добавлено: 30.01.09 13:05
Про ":"
- давно принятый в Basic прием две и более строк кода записать в одной строке. Записываю так давно отлаженный и понятный для себя код. В данном случае - для экономии места(чтоб не надо было перелистывать). Хочешь - замени ":" переносом строки, разбиратся будет легче.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам