CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 5324|回复: 1

C语言学习 -- 快速排序

[复制链接]
发表于 2014-6-25 14:26:00 | 显示全部楼层 |阅读模式

        快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过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);
            printf("\n");
            return 0;
        }

回复

使用道具 举报

发表于 2014-8-1 11:36:02 | 显示全部楼层
鹏哥的帖子都来顶一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-4-27 00:24 , Processed in 0.021245 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部