/*
* 快速排序
* */
#include <stdio.h>
#define LEN 10
void QuickSort(int * F, int low, int high);
int FindPos(int * F, int low, int high);
int main()
{
int i;
int F[] = {-2, 1, -45, 5, 4, -3};
QuickSort(F, 0, 5); //第2,3个参数表示第一个和最后一个元素的下标
for (i=0; i<6; i++)
printf("%d ", F[i]);
printf("\n");
return 0;
}
void QuickSort(int * F, int low, int high)
{
int pos, i;
if (low < high) {
pos = FindPos(F, low, high); //找到第一个元素的位置
for (i=0; i<6; i++)
printf("%d ", F[i]);
printf("\n");
QuickSort(F, low, pos-1);
QuickSort(F, pos+1, high);
}
}
int FindPos(int * F, int low, int high)
{
int val = F[low];
while (low < high) {
while (low < high && F[high] >= val)
high--;
F[low] = F[high];
while (low < high && F[low] <= val)
low++;
F[high] = F[low];
} //执行完该循环后,low和high是相等的
F[low] = val;
return low; //high可以改为low, 但不能改为val 也不能改为a[low] 也不能改为a[high]
}
常见排序-快速排序
最新推荐文章于 2024-09-24 08:04:42 发布