#include<stdio.h>
void QuickSort(int arr[], int L, int R)
{
if(L > R) return;
int left = L, right = R;
// 数组最左边的值作为基准值,取出备份
int pivot = arr[left];
while (left < right)
{
while (arr[right] >= pivot && left<right)
{
right--;
}
if(left < right)
{
arr[left] = arr[right];
left++;
}
while (arr[left] <= pivot && left<right)
{
left++;
}
if(left < right)
{
arr[right] = arr[left];
right--;
}
// 基准值重新插入数组
if(left >= right)
{
arr[left] = pivot;
}
}
QuickSort(arr, L, right - 1);
QuickSort(arr, right + 1, R);
}
void main()
{
// 定义一个乱序数组,有11个元素
int arr[]={1,23,45,3,4,67,34,53,56,3,2};
// 对数组的元素进行快排
QuickSort(arr, 0, 10);
//显示输出排序后的数组
for(int i=0; i<11; i++)
printf("a%d=%d,",i,arr[i]);
//system("pause");
}
C/C++快速排序简单速记代码(适合面试笔试手撕)
于 2024-11-12 10:30:06 首次发布