#include <stdio.h>
#define MAXSIZE 8
int 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;
}
快速排序算法
最新推荐文章于 2024-09-06 10:38:06 发布