#include<stdio.h>
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int partition(int arr[],int low,int high)
{
int pivot=arr[low]; //选取第一个元素为基准元素
while(low<high) //循环跳出条件
{
while(low<high&&arr[high]>=pivot) //将比枢纽元素小的元素放到枢纽左边
{
--high;
}
swap(&arr[high],&arr[low]);//指针交换,将比枢纽小的放到枢纽左边
while(low<high&&arr[low]<=pivot)//将比枢纽大的放到枢纽右边
{
++low;
}
swap(&arr[low],&arr[high]);//此时high位置是枢纽,将比枢纽小的放到枢纽的右边
}
return low;//返回枢纽此时的位置
}
void QuickSort(int arr[],int low,int high)
{
if(low<high)
{
int pivotIndex=partition(arr,low,high);
QuickSort(arr,low,pivotIndex-1);
QuickSort(arr,pivotIndex+1,high);
}
}
int main() {
int arr[] = {7, 11, 13, 5, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
QuickSort(arr, 0, n - 1);
printf("排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
C语言快速排序
于 2023-10-07 15:59:29 首次发布