快速排序

来源:互联网 发布:音乐网站 知乎 编辑:程序博客网 时间:2024/06/09 19:19


#include<iostream>
using namespace std;
void swap(int arr[], int left, int right)
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
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 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);
}
}




 
0 0