快排实现

来源:互联网 发布:红会福娃娃 知乎 编辑:程序博客网 时间:2024/06/06 03:13
#include <stdio.h>#include <stdlib.h>void swap(int arr[], int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}int partition(int arr[], int low, int high) {int temp = arr[low];int left = low;int right = high;while (left != right) {while (temp <= arr[right] && left < right) {right--;}while (temp >= arr[left] && left < right) {left++;}if (left < right) {swap(arr, left, right);}}return left;}void quicksort(int arr[], int low, int high) {if (low >= high) {return;}int temp = arr[low];int pivot = partition(arr, low, high);arr[low] = arr[pivot];arr[pivot] = temp;quicksort(arr, low, pivot - 1);quicksort(arr, pivot + 1, high);}void printIntArray(int array[], int length) {int i;for (i = 0; i < length; i++) {printf("%3d", array[i]);}}int main(void) {setvbuf(stdout, NULL, _IONBF, 0);int len = 0;int i = 0;printf("input length: ");scanf("%d", &len);printf("input array elements: ");int arr[len];for (; i < len; i++) {scanf("%d", &arr[i]);}printf("Before sorted:\n");printIntArray(arr, len);quicksort(arr, 0, len - 1);printf("\nAfter sorted:\n");printIntArray(arr, len);return EXIT_SUCCESS;}

1 0
原创粉丝点击