首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

快速排序Java代码进入无限循环

快速排序是一种常用的排序算法,它通过将一个数组分成两个子数组,然后对这两个子数组分别进行排序,最终将整个数组排序。快速排序的核心思想是通过选择一个基准元素,将数组中小于基准元素的元素放在基准元素的左边,将大于基准元素的元素放在基准元素的右边,然后递归地对左右两个子数组进行排序。

以下是一个快速排序的Java代码示例:

代码语言:txt
复制
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[high];
        int i = low - 1;
        for (int j = low; j < high; j++) {
            if (arr[j] < pivot) {
                i++;
                swap(arr, i, j);
            }
        }
        swap(arr, i + 1, high);
        return i + 1;
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 3, 6, 8, 4, 7};
        quickSort(arr, 0, arr.length - 1);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

这段代码实现了快速排序算法。在quickSort方法中,我们首先选择一个基准元素pivot,然后调用partition方法将数组分成两个子数组,并返回基准元素的索引。接着,我们递归地对左右两个子数组进行排序,直到子数组的长度为1或0。

partition方法中,我们以high作为基准元素的索引,使用i来记录小于基准元素的元素的最右边界。遍历数组,如果当前元素小于基准元素,则将其与i所指向的元素交换,并将i向右移动一位。最后,将基准元素与i+1所指向的元素交换,使得基准元素位于正确的位置。

这段代码的时间复杂度为O(nlogn),其中n为数组的长度。快速排序在大多数情况下具有较好的性能,并且在实际应用中被广泛使用。

腾讯云提供了多种云计算相关产品,例如云服务器、云数据库、云存储等。您可以根据具体需求选择适合的产品。更多关于腾讯云产品的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券