快速排序算法

来源:互联网 发布:苹果cms精仿模板 编辑:程序博客网 时间:2024/04/27 21:41
#include <stdio.h>#define MAXSIZE 8int quick_pass(int arr[], int low, int high) {int key = arr[low]; // 选取第一个记录作为枢轴while (low < high) {while (low < high && arr[high] > key) // 从右到左寻找小于key的记录high--;if (low < high) {arr[low] = arr[high];low++;}while (low < high && arr[low] < key) // 从左到右寻找大于key的记录low++;if (low < high) {arr[high] = arr[low];high--;}}arr[low] = key; // 此时low与high重叠return low;}void sort(int arr[], int low, int high) {if (low < high) {int pos = quick_pass(arr, low, high);sort(arr, low, pos);sort(arr, pos + 1, high);}}int main() {int arr[MAXSIZE] = { 8, 1, 2, 7, 3, 6, 5, 4 };sort(arr, 0, MAXSIZE - 1);int i;for (i = 0; i < MAXSIZE; i++)printf("%d ", arr[i]);printf("\n");return 0;}

原创粉丝点击