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

insertion sort

بدأه ريحانة الاقصى في 18 فبراير 2011 · 4 رد · 543 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد تمثيل عملية ال insertion sort كل خطوة في عملية منفصلة

فمثلا اذا كانت لدي المدخلات

1324 ارييدها ان تظهر في text field ثم بعد التغير يظهر 1324 باعتباره لم يتغير شي في المرحلة الثانية بعدها يظهر 1234 وفي المرحلة الاخيرة 1234

بالمختصر اريد اظهر حالة العناصر بعد كل عملية تغيير ولكن المشكلة اللتي واجهتها هي انني اريد التغير في كل مرحلة ب text field منفصل

يعني ابين الحالات خطوة خطوة في مصفوفة جديدة

البرنامج المرفق يظهر النتيجة النهائية "يعني ان التغيير حصل على نفس المربعات كيف اظهر التغير في مربعات منفصلة يعني كل خطوة على حدا؟

insertion.java

#2

قمت بالتغيير على الكود نوعا ما

package test;

/**
 * @(#)insertion.java
 *
 *
 * @author 
 * @version 1.00 2011/2/18
 */



import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;


public class insertion extends JFrame {

    private JTextField [] textfields=new JTextField[4];
    JPanel resultPanel=new JPanel(new GridLayout());

    public insertion() {
    	this.setLocation(200,200);
    	this.setTitle("homwork # 1");
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.setVisible(true);
    	this.setSize(400,300);

    	setLayout(new BorderLayout());
      // setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
        JPanel textFieldPanel = new JPanel(new GridLayout(1, 5, 5, 5));
        for (int i = 0; i < textfields.length; i++) {
        	JTextField field=new JTextField(3);
        	field.setText((int)(Math.random() * 10)+"");
        	textfields=field;
        	textFieldPanel.add(field);
		}
        textFieldPanel.setBorder(new TitledBorder(" "));

        textFieldPanel.add(new JButton(new AbstractAction("sort") {

			@Override
			public void actionPerformed(ActionEvent e) {
				sortAction();
			}
		}));


        add(textFieldPanel, BorderLayout.NORTH);
        this.pack();
    }

    private void sortAction(){
    	resultPanel.removeAll();
    	GridLayout g=(GridLayout)resultPanel.getLayout();
	    g.setRows(1);
    	insertionSort ();
    	resultPanel.updateUI();
    	add(resultPanel, BorderLayout.CENTER);
    	this.pack();
    }

    public static void main (String[ ] args){   
		 insertion frame = new insertion();
	}	

	 public void insertionSort () {
		int[] x = new int[textfields.length];
		for (int i = 0; i < textfields.length; i++) {
			x = Integer.parseInt(textfields.getText());
		}
		for (int i = 1; i < x.length; i++) {
			for (int j = i; j > 0 && x[j - 1] > x[j]; j--) {
				swap(x, j, j - 1);
				printArray(x);
			}
		}
	}

	public  void swap (int  [ ] x, int a, int b) {
		int  t = x[a];
		x[a] = x;
		x = t;
	} 

    private void printArray(int [ ] x){
    	JPanel panel=new JPanel(new GridLayout(1, x.length));
	    for (int i = 0; i < x.length; i++){
	    	JTextField field=new JTextField(3);
	    	field.setText(""+x);
	    	panel.add(field);
	    }
	    GridLayout g=(GridLayout)resultPanel.getLayout();
	    g.setRows(g.getRows()+1);
	    resultPanel.add(panel);
    }




}
#3

مشكور اخي الكريم

ولكن لو سمحت هل من الممكن توضيح الاوامر التالية

private void sortAction(){

resultPanel.removeAll();

GridLayout g=(GridLayout)resultPanel.getLayout();

g.setRows(1);

insertionSort ();

resultPanel.updateUI();

add(resultPanel, BorderLayout.CENTER);

this.pack();

}

وبالاخص الامر pack

update

وشكرا

#4

دالة pack تقوم بملئ الـ frame وتحجميها على قد المكونات التي تحويها بالضبط.

removeAll حذف كل المكونات في الـ panel

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#5
JavaPorgrammer كتب:

دالة pack تقوم بملئ الـ frame وتحجميها على قد المكونات التي تحويها بالضبط.

removeAll حذف كل المكونات في الـ panel

شكرا جزيلا

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