Informasi

Cara mengurutkan larik dua dimensi dengan gelembung

2014/02/01

2次元配列をバブルソートする方法

Pembuatan tabel definisi data dengan panjang tetap

Yang ingin kami lakukan adalah "menyimpan informasi definisi format yang disimpan dalam tabel dalam larik dua dimensi dalam urutan keluaran", yang diperlukan untuk "menghasilkan hanya empat bidang sebagai format CSV dengan panjang tetap dari sejumlah besar bidang dalam waktu dan data kehadiran ". Pertama-tama kita menyimpan nilai tabel dalam larik dua dimensi dan kemudian mengurutkan larik dua dimensi tersebut dalam urutan keluaran.

固定長データ定義テーブルの生成

Bidang data waktu dan kehadiran yang ingin Anda sertakan dalam format CSV adalah

  1. employee code
  2. division code
  3. work hours
  4. Factory Code

dan informasi definisi format (properti setiap bidang) adalah sebagai berikut

  1. Codes in the above 4 fields (key properties)
  2. output order
  3. Fill in the blanks or fill in the zeros
  4. decimal point position
  5. number of digits
  6. Required or optional

Algoritme yang kami gunakan di sini adalah bubble sort and loop, atau lebih tepatnya, bubble sort adalah struktur loop bersarang. Sebagai pendahuluan, kita akan mendefinisikan nilai tabel sebagai kelas array 2D.

Array dua dimensi

  • Semua benda adalah contoh (objek) yang diwujudkan oleh kelas yang terdiri dari atribut (properti), dan kunci kelas tersebut adalah identitas.
2次元配列

新規クラス追加

Jika contoh ini adalah layanan Oracle, akan selalu ada satu administrator dan beberapa skema (pengguna) dapat ditentukan. Dimungkinkan juga untuk memulai dan menghentikan beberapa instans dalam Oracle DB (superclass), tetapi ini akan membutuhkan banyak pekerjaan karena menyediakan jumlah layanan yang sama dengan jumlah instans.

Singkatnya, array dua dimensi adalah tabel, tabel didefinisikan sebagai kelas, definisi kelas terdiri dari properti kunci dan properti lainnya, dan dengan demikian sebuah instance (objek) dapat dibuat dan informasi definisi format dapat disimpan untuk pertama kali.

Cara penulisan array dua dimensi (tabel) adalah dengan menulis Array (Kolom, Baris), jadi definisi dari array adalah Array (5, jumlah field keluaran), lalu tulis properti key (jam kerja, kode karyawan, kode departemen, pabrik, dll.) di Array (0, 0) ke Array (0, objectCount-1). Array (0, 0) to Array (5, 0), Array (0, 1) to Array (5, 1), dan seterusnya.

Kemudian, Array (0, 0) ke Array (5, 0), Array (0, 1) to Array (5, 1) dan seterusnya.

2次元配列

Omong-omong, sel Excel juga berada dalam urutan kolom dan baris seperti A1, B1, C1 ....

Bubble sort

Informasi definisi format yang disimpan dalam larik dua dimensi harus diurutkan dalam "urutan keluaran", jika tidak maka tidak cocok untuk algoritme larik.
バブルソート

Jenis gelembung secara konseptual sangat mudah dipahami, tetapi saya ingin tahu bagaimana menjelaskannya kepada orang lain tanpa menggambar.

Proses membandingkan angka di bawah Anda dengan angka di bawah Anda dan menggantinya jika sebaliknya, diulangi sampai angka terakhir… Sangat halus. Proses ini menentukan nilai terendah, nilai terendah kedua, dan seterusnya hingga hanya tersisa satu nilai terakhir.

バブルソート

Seperti disebutkan di atas, jenis gelembung memiliki struktur ganda: loop luar dan loop dalam.

    'From 0 to objectCount-2nd, the value in the output order is the base point (outer loop).
    f = 0
    Do

        'Compares the fth value in the output order to f+1,... .objectCount-1st (final value) (inner loop)
        e = f + 1
        Do

            If Val(Array(0, f)) > Val(Array(0, e)) Then

                'If it's greater than the next value, evacuate.
                Temp(0, f) = Array(0, f) 'output order
                Temp(1, f) = Array(1, f) 'field name
                Temp(2, f) = Array(2, f) 'Fill in the blanks or fill in the zeros
                Temp(3, f) = Array(3, f) 'decimal point position
                Temp(4, f) = Array(4, f) 'number of digits
                Temp(5, f) = Array(5, f) 'Required or optional
                'replacement
                Array(0, f) = Array(0, e) 'output order
                Array(1, f) = Array(1, e) 'field name
                Array(2, f) = Array(2, e) 'Fill in the blanks or fill in the zeros
                Array(3, f) = Array(3, e) 'decimal point position
                Array(4, f) = Array(4, e) 'number of digits
                Array(5, f) = Array(5, e) 'Required or optional

                'Restore the saved value.
                Array(0, e) = Temp(0, f) 'output order
                Array(1, e) = Temp(1, f) 'field name
                Array(2, e) = Temp(2, f) 'Fill in the blanks or fill in the zeros
                Array(3, e) = Temp(3, f) 'decimal point position
                Array(4, e) = Temp(4, f) 'number of digits
                Array(5, e) = Temp(5, f) 'Required or optional

            End If

            e = e + 1
        Loop While e < objectCount

        f = f + 1
    Loop While f < objectCount - 1

Loop processing

Pernyataan Do ~ Loop while dalam kode sortir gelembung mudah digunakan untuk "membaca ke nilai terakhir" dan karena pernyataan bersyarat ada setelah pemrosesan, setidaknya data pertama yang akan diproses akan diproses.

Namun, jika pernyataan kondisional ditempatkan sebelum diproses, seperti dalam kasus Do While - Loop, jika data pertama dalam loop tidak cocok dengan kondisi, loop tidak akan pernah terjadi dan hasilnya tidak akan dicetak.

Dalam hal ini, jumlah loop dapat ditentukan, sehingga pernyataan For to next dapat digunakan.

ループ処理

© 2021 BAHTERA HISISTEM Powered by STINGER