Hi,欢迎来到嵌入式培训高端品牌 - 华清远见教育科技集团<北京总部官网>,专注嵌入式工程师培养15年!
当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 快速排序的C语言代码实现
快速排序的C语言代码实现
时间:2017-01-05作者:华清远见

快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分,反复上述过程,将整个待排数列分散为若干个小数列而分别进行排序操作。假设我们现对一列数进行快速排序,其C语言代码实现如下:

#include <stdio.h>
        int partition(int *data,int low,int high)
        {       int t = 0;
                t = data[low];
                while(low < high)
                {       while(low < high && data[high] >= t)
                                high--;
                        data[low] = data[high];
                        while(low < high && data[low] <= t)
                                low++;
                        data[high] = data[low];
                }
                data[low] = t;
                return low;
        }

void sort(int *data,int low,int high)        //快排每趟进行时的枢轴要重新确定,由此进 //一步确定每个待排小记录的low及high的值
        {       if(low >= high)
                        return ;
                int pivotloc = 0;
                pivotloc = partition(data,low,high);
                sort(data,low,pivotloc-1);
                sort(data,pivotloc+1,high);
        }
        void quick_sort(int *data,int n)         //该函数进行sort过程的调用
        {         sort(data,0,n-1); }

int main()
        {       int i;
                int data[]={49,38,32,98,65,74,12,8};
                quick_sort(data,sizeof(data)/sizeof(int));
                for( i = 0 ; i < sizeof(data)/sizeof(int); i++)
                printf("%d ",data[i]);
                printf("\n");
                return 0;
        }

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)