Java
 Computer >> コンピューター >  >> プログラミング >> Java

反復クイックソート用のJavaプログラム


以下は、反復クイックソート用のJavaプログラムです-

public class Demo{
   void swap_vals(int arr[], int i, int j){
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
   }
   int partition(int arr[], int l, int h){
      int x = arr[h];
      int i = (l - 1);
      for (int j = l; j <= h - 1; j++){
         if (arr[j] <= x){
            i++;
            swap_vals(arr, i, j);
         }
      }
      swap_vals(arr, i + 1, h);
      return (i + 1);
   }
   void quick_sort(int arr[], int l, int h){
      int my_list[] = new int[h - l + 1];
      int top = -1;
      my_list[++top] = l;
      my_list[++top] = h;
      while (top >= 0){
         h = my_list[top--];
         l = my_list[top--];
         int p = partition(arr, l, h);
         if (p - 1 > l){
            my_list[++top] = l;
            my_list[++top] = p - 1;
         }  
         if (p + 1 < h){
            my_list[++top] = p + 1;
            my_list[++top] = h;
         }
      }
   }
   public static void main(String args[]){
      Demo my_ob = new Demo();
      int my_arr[] = { 34, 76, 41, 32, 11, 0 , 91, 102, -11};
      my_ob.quick_sort(my_arr, 0, my_arr.length - 1);
      int i;
      System.out.println("After iteratively performing quick sort, the array is ");
      for (i = 0; i < my_arr.length; ++i)
      System.out.print(my_arr[i] + " ");
   }
}

出力

After iteratively performing quick sort, the array is
-11 0 11 32 34 41 76 91 102

Demoという名前のクラスには、一時変数を使用して値を交換するために使用される「swap_vals」、ピボット値に基づいて配列を2つに分割する「partition」関数、およびピボット値とこの値に基づいて、配列内の値を並べ替えます。

main関数では、Demoクラスのインスタンスが配列とともに作成されます。この配列で「quick_sort」関数が呼び出され、出力がコンソールに表示されます。


  1. 反復クイックソート用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復的な方法を使用したクイックソートの概念を使用して配列をソートする必要があります ここでは、最初に配列をパーティション化し、別のパーティションを並べ替えて、並べ替えられた配列を取得します。 それでは、以下の実装のソリューションを見てみましょう- 例 # iterative way def partition(arr,l,h):    i = ( l - 1 )    x = arr[h]    for j in rang

  2. 反復マージソート用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復によるマージソートの概念を使用して配列をソートする必要があります。 ここでは、最大の要素を最後に配置します。これは、配列がソートされるまで繰り返されます。 次に、以下の実装のソリューションを見てみましょう- 例 # iterative way def mergeSort(a):    current_size = 1    # traversing subarrays    while current_size <