الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة مع ترتيب عناصر أعمدة المصفوفة

بدأه المشاكـس5550 في 3 نوفمبر 2012 · 3 رد · 703 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي مشكلة متعلقة بكيفية ترتيب عناصر المصفوفة .... كيف يعني ؟ ... بدي أرتب المصفوفة على حسب عناصر الاعمدة الزوجية (عناصر العمود التاني والرابع والسادس .. وهكذا) ، راح أوضح أكثر :

عندي مصفوفة 6*6 ... زين ، تحتوي على الاعداد التالية :

0 | 15 | 0 | 06 | 0 | 04

1 | 19 | 1 | 99 | 1 | 86

2 | 55 | 2 | 54 | 2 | 12

3 | 82 | 3 | 73 | 3 | 23

4 | 66 | 4 | 95 | 4 | 11

5 | 43 | 5 | 93 | 5 | 13

نلاحظ ان العمود الاول والثالث والخامس 'فردي' هو نفسه ... اكيد

بدي أرتب المصفوفة تنازليا من أجل أن أحصل على المصفوفة التالية :

3 | 82 | 1 | 99 | 1 | 86

4 | 66 | 4 | 95 | 3 | 23

2 | 55 | 5 | 93 | 5 | 13

5 | 43 | 3 | 73 | 2 | 12

1 | 19 | 2 | 54 | 4 | 11

0 | 15 | 0 | 06 | 0 | 04

تماما هيك ، يعني نرتب المصفوفة من خلال ترتيب الاعمدة الزوجية

لقد جربت البحث عن طرق لذلك وعثرت على الترتيب من خلال الضغط على الـ Header يعني Sorting By Clicking on Table Header ... لكنها لا تناسبني أبدا ، بدي أنها ترتب بصفة اتوماتيكيا

وهذا ما جربت استعماله

        Table2.setPreferredScrollableViewportSize(Table2.getPreferredSize());
    	Table2.setAutoCreateRowSorter(true);
    	DefaultRowSorter sorter = ((DefaultRowSorter)Table2.getRowSorter());
    	ArrayList list = new ArrayList();
    	list.add( new RowSorter.SortKey(2, SortOrder.DESCENDING) );
    	sorter.setSortKeys(list);
    	sorter.sort();

    	JScrollPane scrollPane = new JScrollPane( Table2 );
    	getContentPane().add( scrollPane );
        frame.add(scrollPane, BorderLayout.CENTER);
        frame.setSize(300, 300);
        frame.setVisible(true);

لكن بدي أعمل ترتيب خارج/وبدون استعمال الـ JTable بيكون أحسن

كما جربت البحث عن استعمال الـ Quick Sort الذي أظنه الاسرع على الاطلاق من بين خوارزميات الترتيب ... لكني ما خرجت بنتيجة ، أضف على ذلك أن طريقة ترتيب getRowSorter تبدو لطيفة جدا :lol: ، لكن تقوم بترتيب المصفوفة على حسب عمود واحد فقط :blink: :blink: وأنا بدي في هاي الحالة 3 أعمدة :happy:

أتمنى أن أصل الى حل جيد

تحياتي :)

556891961.gif

I am learning from you

it is the programmer eye

#2

:blush:

556891961.gif

I am learning from you

it is the programmer eye

#3

السلام عليكم

مرحبا أخي مشاكس :happy:

أعتقد أنه لا داعي للتفكير في هياكل بيانات متقدمة, لأن "المصفوفات" تكفي لهذا الأمر :)

هذا مثال كتبته لك ع السريع, أرجو أن يُفيدك :

public class NewClass {

    public static int array[][] = {{0, 15, 0, 6, 0, 4}, {1, 19, 1, 99, 1, 86},
        {2, 55, 2, 54, 2, 12}, {3, 82, 3, 73, 3, 23},
        {4, 66, 4, 95, 4, 11}, {5, 43, 5, 93, 5, 13}};

    public static void swap(int[][] x, int i1, int j1, int i2, int j2) {
        int temp;
        temp = x[i1][j1];
        x[i1][j1] = x[i2][j2];
        x[i2][j2] = temp;
    }

    public static void bubbleSort(int array[][], int numColonne, int size) {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size - i - 1; j++) {
                if (array[j][numColonne] < array[j + 1][numColonne]) {
                    swap(array, j, numColonne, j + 1, numColonne);
                    swap(array, j, numColonne - 1, j + 1, numColonne - 1);
                }
            }
        }
    }

    public static void print() {
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                System.out.print(array[j] + " | ");
            }
            System.out.print("\n");
        }
    }

    public static void main(String args[]) {
        System.out.println("Before : ");
        print();
        for (int i = 1; i < 6; i += 2) {
            bubbleSort(array, i, 6);
        }
        System.out.println("After : ");
        print();
    }
}

المُخرجات :

post-219439-076772800 1352292100_thumb.p

بالتوفيق.

المرفقات
test.png

تم تعديل هذه المشاركة بواسطة Sn@CkeR في 7 نوفمبر 2012 في 15:42

3
#4

شكرا Sn@CkeR :)

تم تعديل هذه المشاركة بواسطة المشاكـس5550 في 8 نوفمبر 2012 في 22:17

556891961.gif

I am learning from you

it is the programmer eye

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…