快速排序程序

快速排序程序

#include <stdio.h>

int FindPos(int * a,int low, int high);
void QuickSort(int * a, int low, int high);

int main()
{
    int a[6] = {2, 1, 0, 5, 4, -96}; //此处可以多试几组数据
    int i;
    QuickSort(a, 0, 5);//第二个参数表示第一个元素的下标,  第三参数表示最后一个元素的下标

    for(i=0;i<6;i++)
        printf("%d ", a[i]);
    printf("
");

    return 0;
}
void QuickSort(int * a, int low, int high)
{
    int pos;
    if(low<high)
    {
        pos = FindPos(a, low, high);
        QuickSort(a, low, pos-1);
        QuickSort(a, pos+1, high);
    }
}
int FindPos(int * a,int low, int high)
{
    int val = a[low];
    while(low<high)
    {
        while(low<high&&a[high]>=val) //当high的值大于val时high往右移
            high--;
        a[low] = a[high];

        while(low<high&&a[low]<=val)
            low++;
        a[high] = a[low];
    } //终止while循环后low和high一定是相等的
    a[low] = val;//此时a[low] = a[high]

    return  low; //low可以改为high,但不可以改为val ,但不能改为a[low],也不能改为a[high];
}

 排序和查找的关系

  查找是排序的前提

  排序是重点

原文地址:https://www.cnblogs.com/spore/p/11094083.html