您的位置:首页 > 编程语言 > Java开发

【Java】快速排序

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

快速排序的时间复杂度:

最好的情况下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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: