Не удается сортировка!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Не удается сортировка!

Сообщение Don Leno » 10.04.2020 (Пт) 18:59

Здравствуйте!
Написал код простейшей сортировки (тупой перебор по всему массиву, не пинайте!). Суть в том что берется первый элемент массива и проверяется со всем массивом и если в нем найдутся значения меньше нашего или же равные то ставим в переменную cnt +1. То есть так пройдя по всему массиву мы можем узнать больше/равно скольких символов в массиве наше значение и это число равно позиции в сортированом списке. В итоге формируется сортированный список.

Ради примера взял исполняемый файл write.exe (это WordPad из Win7) и в массив загоняю число всех символов из файла (от 0 до 255). Далее сортирую. Вот только проблема он почему то пропускет некоторые значения.

Внимание! Мне не нужен суперскоростной алгоритм сортировки. Мне для опытов нужен простой алгоритм, в котором я сам могу разобраться и понять как он работает, поэтому не пинайте за мой метод сортировки. И ДА! я знаю что его можно ускорить, но мне это не нужно сейчас!!!

Ниже в файле CountSym изображенно первый подсчет символов в файле (несортированный список)
Во втором файле Sort изображена отсортированный массив, и в нем как раз то не хватаем многих символов (>100)
И третьим файлом выкладываю исходник
Вложения
CountSym.jpg
CountSym.jpg (43.72 Кб) Просмотров: 1882
Sort.jpg
Sort.jpg (44.36 Кб) Просмотров: 1882
Compress.rar
(6.37 Кб) Скачиваний: 142

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Не удается сортировка!

Сообщение Mikle » 10.04.2020 (Пт) 22:25

Вот простейшая сортировка массива, просто создай новый проект и добавь в форму код:
Код: Выделить всё
Option Explicit

Dim Ar() As Single
Dim Cnt As Long

Private Sub Form_Load()
  Dim i As Long

  Cnt = 10
  Randomize Timer
  ReDim Ar(Cnt - 1)
  For i = 0 To Cnt - 1
    Ar(i) = Rnd
  Next i

  ShowArray
  Sort
  ShowArray
End Sub

Private Sub Sort()
  Dim i As Long, j As Long, v As Single

  For j = 0 To Cnt - 2
    For i = j + 1 To Cnt - 1
      If Ar(i) < Ar(j) Then
        v = Ar(i)
        Ar(i) = Ar(j)
        Ar(j) = v
      End If
    Next i
  Next j
End Sub

Private Sub ShowArray()
  Dim i As Long

  For i = 0 To Cnt - 1
    Debug.Print Format(Ar(i), "0.0000"),
  Next i
  Debug.Print
End Sub

В окне Immediate показывает массив до и после сортировки.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Не удается сортировка!

Сообщение Don Leno » 11.04.2020 (Сб) 16:56

Mikle, спс тебе огромное за этот код. А то уже бьюсь сколь дней не могу написать. Как все же просто!

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Не удается сортировка!

Сообщение kibernetics » 27.04.2020 (Пн) 23:49

А вот тебе ещё наглядное видео с разными видами сортировки. Когда задумаешь ускорять логику работы своего кода, может пригодиться:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList