Java實現快速排序
阿新 • • 發佈:2021-01-22
技術標籤:java演算法
程式碼如下:
package code1;
import java.util.Scanner;
public class QuickSort
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入陣列的長度: ");
int n = scanner.nextInt();
int[] array = new int [n];
System.out.print("請輸入需要排序的陣列:");
for (int i = 0; i < array.length; i++)
array[i] = scanner.nextInt();
quicksort(array,0,array.length-1);
print(array);
}
public static void print(int[]array) //輸出排序後的陣列
{
System.out.print ("快速排序後的陣列:");
for (int i = 0; i <array.length ; i++)
{
System.out.print(array[i]+" ");
}
}
private static void quicksort(int[]array,int begin,int end)
{
if (begin<end)
{
int index=getIndex(array,begin, end);
quicksort(array,begin,index-1);
quicksort(array,index+1,end);
}
}
private static int getIndex(int[]array,int begin,int end)//確定軸點的位置
{
int pivot=array[begin];
while (begin<end)
{
while (begin<end)
{
if (pivot < array[end]) //右邊元素>軸點
end--;
else
{ 右邊元素<=軸點
array[begin] = array[end];
begin++;
break;
}
}
while (begin<end)
{
if (pivot > array[begin])//左邊元素<軸點
begin++;
else //左邊元素>=軸點
{
array[end] = array[begin];
end--;
break;
}
}
}
array[begin]=pivot;
return begin;
}
}
輸出: