【Java】快速排序

来源:互联网 发布:国际长途网络电话软件 编辑:程序博客网 时间:2024/06/07 22:58

快速排序是随机挑选一个元素,对数组进行分割,将所有比它小的元素排在前面,比它大的元素排在后面,这里分割经由一系列元素交换的动作完成。

快速排序的时间复杂度:

最好的情况下O(n(log2n)), 最坏的情况下O(n2)

空间复杂度 O(1)

public class quickSort {void quicksort(int arr[], int left, int right) {int index = partition(arr, left, right);if (left < index - 1) {quicksort(arr, left, index - 1);}if (index < right) {quicksort(arr, index, right);}}int partition(int arr[], int left, int right) {int pivot = arr[(left + right) / 2];while (left <= right) {while(arr[left] < pivot) left++;while(arr[right] > pivot) right--;if (left <= right) {swap(arr, left, right);left++;right--;}}return left;}void swap(int arr[], int left, int right) {int temp = arr[left];arr[left] = arr[right];arr[right] = temp;}}


0 0
原创粉丝点击