اذهب إلى المحتوى

السؤال

نشر

اخواني اعلم أنه هذه الخوارزميه ترتيب الفقاعات هي مقارنة الارقام على التوالي واعلم مبدأ عملها ولكن تطبيق عملي في لغة الجافا لم استطع فهمه عمل الكود وما هي الفائده العملية من هذه الخوارزميه

// import the Clas


import java.util.Arrays;
import java.util.Scanner;

class Main {

  // create an object of scanner
  // to take input from the user
  Scanner input = new Scanner(System.in);

  // method to perform bubble sort
  void bubbleSort(int array[]) {
    int size = array.length;

    // for ascending or descending sort
    System.out.println("Choose Sorting Order:");
    System.out.println("1 for Ascending \n2 for Descending");
    int sortOrder = input.nextInt();

    // run loops two times
    // first loop access each element of the array
    for (int i = 0; i < size - 1; i++)

      // second loop performs the comparison in each iteration
      for (int j = 0; j < size - i - 1; j++)

        // sort the array in ascending order
        if (sortOrder == 1) {
          // compares the adjacent element
          if (array[j] > array[j + 1]) {

            // swap if left element is greater than right
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
          }
        }

        // sort the array in descending order
        else {
          // compares the adjacent element
          if (array[j] < array[j + 1]) {

            // swap if left element is smaller than right
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
          }
        }

  }

  // driver code
  public static void main(String args[]) {

    // create an array
    int[] data = { -2, 45, 0, 11, -9 };

    // create an object of Main class
    Main bs = new Main();

    // call the method bubbleSort using object bs
    // pass the array as the method argument
    bs.bubbleSort(data);
    System.out.println("Sorted Array in Ascending Order:");

    // call toString() of Arrays class
    // to convert data into the string
    System.out.println(Arrays.toString(data));
  }
}

// import the Class
import java.util.Arrays;
import java.util.Scanner;

class Main {

  // create an object of scanner
  // to take input from the user
  Scanner input = new Scanner(System.in);

  // method to perform bubble sort
  void bubbleSort(int array[]) {
    int size = array.length;

    // for ascending or descending sort
    System.out.println("Choose Sorting Order:");
    System.out.println("1 for Ascending \n2 for Descending");
    int sortOrder = input.nextInt();

    // run loops two times
    // first loop access each element of the array
    for (int i = 0; i < size - 1; i++)

      // second loop performs the comparison in each iteration
      for (int j = 0; j < size - i - 1; j++)

        // sort the array in ascending order
        if (sortOrder == 1) {
          // compares the adjacent element
          if (array[j] > array[j + 1]) {

            // swap if left element is greater than right
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
          }
        }

        // sort the array in descending order
        else {
          // compares the adjacent element
          if (array[j] < array[j + 1]) {

            // swap if left element is smaller than right
            int temp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = temp;
          }
        }

  }

  // driver code
  public static void main(String args[]) {

    // create an array
    int[] data = { -2, 45, 0, 11, -9 };

    // create an object of Main class
    Main bs = new Main();

    // call the method bubbleSort using object bs
    // pass the array as the method argument
    bs.bubbleSort(data);
    System.out.println("Sorted Array in Ascending Order:");

    // call toString() of Arrays class
    // to convert data into the string
    System.out.println(Arrays.toString(data));
  }
}

 

Recommended Posts

  • 1
نشر

إن خوارزمية ال bubble sort تفيد كما يوحي اسمها للترتيب، طبعاً بشكل عام لا نقوم باستعمالها لأنها ليست سريعة في الترتيب و توجد خوارزميات أفضل منها.

آلية عملها هو أن تقوم في كل مرة بتبديل عنصرين متتالين في حال كان أحدهما أكبر من الآخر ( هذا يعتمد على إذا كنا نريد الترتيب تصاعدياً أو تنازلياً)، بشكل عام عندما نقوم بهذه الخطوة فإننا في كل مرة سنضع عنصر واحد على الأقل في مكانه الصحيح، لأنه تخيل معي أنه لدينا ترتيب تصاعدي، ففي أول مرور على المصفوفة العنصر الأكبر سيتم تبديله في كل مرة، هكذا حتى يصل إلى النهاية، في المرور التالي ثاني أكبر عنصر سيتم وضعه في مكانه الصحيح لنفس السبب، و بالتالي فإننا نريد عدد مرات مرور يساوي عدد العناصر ناقص 1، و ذلك لأنه في حال وضعنا n-1 عنصر في مكانه الصحيح فتلقائياً آخر عنصر سيكون في مكانه الصحيح، حيث  n هنا هي عدد العناصر.

بالتالي فكرة الكود كلها تتمثل في تكرار عملية n-1 مرة، هذه العملية هي المرور على كافة عناصر المصفوفة و تبديل عنصرين متتالين في حال كان الأول أكبر من الثاني ( ترتيب تصاعدي).

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...