版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
-
#pragma once
#include <stdio.h>int Partion(int *arr, int left, int right) { int pivot = arr[right]; while (left < right) { while (left < right && arr[left] <= pivot) { left++; } arr[right] = arr[left]; while (left < right && arr[right] >= pivot) { right--; } arr[left] = arr[right]; } arr[left] = pivot; return left; } int partion2(int *arr, int left, int right) { int div = left; for (int i = left; i < right; i++) { if (arr[i] < arr[right]) { int tmp = arr[div]; arr[div] = arr[i]; arr[i] = tmp; div++; } } int tmp = arr[div]; arr[div] = arr[right]; arr[right] = tmp; return div; } void Print(int *arr, int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } void QuickSort(int *arr, int left, int right) { if (left >= right) { return; } int div = Partion_1(arr, left, right); QuickSort(arr, left, div - 1); QuickSort(arr, div + 1, right); }
-
#include “test.h”
int main() { int arr[] = { 1, 3, 5, 2, 8, 1, 0, 33, 55, 22, 344, 13, 5, 6, 243, 151, 388 }; int sz = sizeof(arr) / sizeof(arr[0]); QuickSort(arr, 0, sz - 1); Print(arr, sz); system("pause"); return 0; }