⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quicksort.java

📁 这是Java的模式编程
💻 JAVA
字号:
package Strategy;

import java.lang.Comparable;

class QuickSort extends SortStrategy 
{
    public void sort(Comparable[] a, int lo0, int hi0) 
    {
		int lo = lo0;
		int hi = hi0;
		
		if (lo >= hi) 
		{
		    return;
	    }
        else if( lo == hi - 1 ) 
        {
            /*
             *  sort a two element list by swapping if necessary 
             */
            if (a[lo].compareTo(a[hi]) > 0) 
            {
                Comparable T = a[lo];
                a[lo] = a[hi];
                a[hi] = T;
            }
            return;
	    }


        /*
         *  Pick a pivot and move it out of the way
         */
	    Comparable pivot = a[(lo + hi) / 2];
        a[(lo + hi) / 2] = a[hi];
        a[hi] = pivot;

        while( lo < hi ) 
        {
            /*
             *  Search forward from a[lo] until an element is found that
             *  is greater than the pivot or lo >= hi 
             */
            while (a[lo].compareTo(pivot) <= 0 && lo < hi) 
            {
		        lo++;
	        }

            /*
             *  Search backward from a[hi] until element is found that
             *  is less than the pivot, or lo >= hi
             */
		    while (a[hi].compareTo(pivot) >= 0 && lo < hi ) 
		    {
				hi--;
		    }

            /*
             *  Swap elements a[lo] and a[hi]
             */
            if( lo < hi ) 
            {
                Comparable T = a[lo];
                a[lo] = a[hi];
                a[hi] = T;
            }
	    }

        /*
         *  Put the median in the "center" of the list
         */
        a[hi0] = a[hi];
        a[hi] = pivot;

        /*
         *  Recursive calls, elements a[lo0] to a[lo-1] are less than or
         *  equal to pivot, elements a[hi+1] to a[hi0] are greater than
         *  pivot.
         */
		sort(a, lo0, lo-1);
		sort(a, hi+1, hi0);
    }

    public void sort(Comparable[] a) 
    {
		sort(a, 0, a.length-1);
		super.printInfor("QuickSort");
		super.printArray(a);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -