- #include
- 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
//循环跳出条件 - {
- while(low
=pivot) //将比枢纽元素小的元素放到枢纽左边 - {
- --high;
- }
- swap(&arr[high],&arr[low]);//指针交换,将比枢纽小的放到枢纽左边
- while(low
//将比枢纽大的放到枢纽右边 - {
- ++low;
- }
- swap(&arr[low],&arr[high]);//此时high位置是枢纽,将比枢纽小的放到枢纽的右边
-
- }
- return low;//返回枢纽此时的位置
- }
- void QuickSort(int arr[],int low,int high)
- {
- if(low
- {
- 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;
- }