快速排序代码实现

来源:互联网 发布:汇编和c语言先学哪个 编辑:程序博客网 时间:2024/05/16 15:06

快速排序代码实现

快速排序代码:

#include <stdio.h>void QuickSort(int * a, int low, int high);int FindPos(int * a, int low, int high);int main(void){    int a[6] = {2, 1, 0, 5, 4, 3};    int i;    QuickSort(a, 0, 5);    for(i=0; i<6; ++i)        printf("%d ", a[i]);    printf("\n");    return 0;}void QuickSort(int * a, int low, int high){    int pos;    if(low < high)//只有low和high不等的时候才排序    {        //a数组中第一个元素从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){    //每一次排序的目的是为了找到a[low]位置的元素的在数组a中的最终位置    int val = a[low];    while(low < high)    {        while(low < high && a[high]>=val)            --high;        a[low] = a[high];        while(low < high && a[low]<=val)            low++;        a[high] = a[low];    }//此处循环完后,a[low] = a[high]    a[low] = val;    return low;//或return high,因为此时low和high相等}
0 0
原创粉丝点击