快速排序算法java代码
时间: 2023-09-11 19:05:11 浏览: 109
### 回答1:
快速排序算法的Java代码是:
public class QuickSort
{
/* This function takes last element as pivot,
places the pivot element at its correct
position in sorted array, and places all
smaller (smaller than pivot) to left of
pivot and all greater elements to right
of pivot */
int partition(int arr[], int low, int high)
{
int pivot = arr[high];
int i = (low-1); // index of smaller element
for (int j=low; j<high; j++)
{
// If current element is smaller than or
// equal to pivot
if (arr[j] <= pivot)
{
i++;
// swap arr[i] and arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// swap arr[i+1] and arr[high] (or pivot)
int temp = arr[i+1];
arr[i+1] = arr[high];
arr[high] = temp;
return i+1;
}
/* The main function that implements QuickSort()
arr[] --> Array to be sorted,
low --> Starting index,
high --> Ending index */
void sort(int arr[], int low, int high)
{
if (low < high)
{
/* pi is partitioning index, arr[pi] is
now at right place */
int pi = partition(arr, low, high);
// Recursively sort elements before
// partition and after partition
sort(arr, low, pi-1);
sort(arr, pi+1, high);
}
}
/* A utility function to print array of size n */
static void printArray(int arr[])
{
int n = arr.length;
for (int i=0; i<n; ++i)
System.out.print(arr[i]+" ");
System.out.println();
}
// Driver program
public static void main(String args[])
{
int arr[] = {10, 7, 8, 9, 1, 5};
int n = arr.length;
QuickSort ob = new QuickSort();
ob.sort(arr, 0, n-1);
System.out.println("sorted array");
printArray(arr);
}
}
### 回答2:
快速排序算法是一种常用的排序算法,它基于分治的思想,将待排序的数组划分为两部分,一部分小于基准元素,一部分大于基准元素,然后分别对这两部分进行递归排序。
以下是使用Java实现的快速排序算法代码:
```java
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high); // 将数组划分为两部分
quickSort(arr, low, pivot - 1); // 对左子数组进行递归排序
quickSort(arr, pivot + 1, high); // 对右子数组进行递归排序
}
}
public static int partition(int[] arr, int low, int high) {
int pivot = arr[low]; // 以第一个元素为基准
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high]; // 将比基准小的元素移到低端
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low]; // 将比基准大的元素移到高端
}
arr[low] = pivot; // 基准元素归位
return low; // 返回基准元素的位置
}
public static void main(String[] args) {
int[] arr = {5, 3, 8, 4, 2, 7, 1, 6};
quickSort(arr, 0, arr.length - 1);
System.out.println("排序结果:" + Arrays.toString(arr));
}
}
```
以上代码使用了快速排序算法对一个整数数组进行排序,其中`quickSort`方法表示递归排序,`partition`方法用于划分数组,`main`方法用于测试。
运行结果:
```
排序结果:[1, 2, 3, 4, 5, 6, 7, 8]
```
### 回答3:
快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再分别对这两部分数据进行排序,递归地实现排序过程,最终得到有序的数据。
以下是使用Java语言实现快速排序算法的代码:
```java
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0) {
return;
}
if (low >= high) {
return;
}
int mid = low + (high - low) / 2;
int pivot = arr[mid];
int i = low, j = high;
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (low < j) {
quickSort(arr, low, j);
}
if (high > i) {
quickSort(arr, i, high);
}
}
public static void main(String[] args) {
int[] arr = {5, 2, 6, 1, 3, 9, 4, 8, 7};
int n = arr.length;
System.out.println("原始数组:");
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
quickSort(arr, 0, n - 1);
System.out.println("排序后数组:");
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
```
以上代码中,`quickSort`方法实现了快速排序的主要逻辑。首先判断数组是否为空或者长度为0,如果是则直接返回。然后选择中间位置的元素作为基准值,并设定两个指针`i`和`j`分别指向待排序数组的第一个元素和最后一个元素。接着,在每一次迭代中,将`i`指针向右移动直到找到一个大于等于基准值的元素,将`j`指针向左移动直到找到一个小于等于基准值的元素,然后交换这两个元素的位置。重复这个过程直到`i`和`j`相遇为止。最后,根据相遇位置将待排序数组分成两部分,分别递归地对这两部分进行快速排序。在`main`方法中,我们可以通过调用`quickSort`方法对给定的数组进行排序,并打印出排序后的结果。
以上就是快速排序算法的Java实现代码。希望可以帮到你!
阅读全文