📜  Java程序,用于Stooge Sort

📅  最后修改于: 2021-04-23 19:24:39             🧑  作者: Mango

Stooge排序是一种递归排序算法。定义如下(用于升序排序)。

Step 1 : If value at index 0 is greater than
         value at last index, swap them.
Step 2:  Recursively,
       a) Stooge sort the initial 2/3rd of the array.
       b) Stooge sort the last 2/3rd of the array.
       c) Stooge sort the initial 2/3rd again to confirm.
// Java program to implement stooge sort
import java.io.*;
  
public class stooge
{
    // Function to implement stooge sort
    static void stoogesort(int arr[], int l, int h)
    {
        if (l >= h)
           return;
  
        // If first element is smaller
        // than last,swap them
        if (arr[l] > arr[h])
        {
            int t = arr[l];
            arr[l] = arr[h];
            arr[h] = t;
        }
  
        // If there are more than 2 elements in
        // the array
        if (h-l+1 > 2)
        {
            int t = (h-l+1) / 3;
  
            // Recursively sort first 2/3 elements
            stoogesort(arr, l, h-t);
  
            // Recursively sort last 2/3 elements
            stoogesort(arr, l+t, h);
  
            // Recursively sort first 2/3 elements
            // again to confirm
            stoogesort(arr, l, h-t);
        }
    }
  
    // Driver Code
    public static void main(String args[])
    {
        int arr[] = {2, 4, 5, 3, 1};
        int n = arr.length;
  
        stoogesort(arr, 0, n-1);
  
        for (int i=0; i < n; i++)
             System.out.print(arr[i] + " ");
    }
}
// Code Contributed by Mohit Gupta_OMG <(0_o)>

输出:

1 2 3 4 5 

请参阅有关Stooge Sort的完整文章,以了解更多详细信息!