首页 > 编程语言 > 详细

排序算法——快速排序

时间:2018-06-26 10:42:18      阅读:201      评论:0      收藏:0      [点我收藏+]

一、C 程序实现

/*******************************************************
* Description: 快速排序算法
* Author: shujuxiong
* Version: 1.0
* Time: 2018-06-26
*******************************************************/

#include <stdio.h>

//函数:打印数组
void PrintDataArray(int a[], int n)
{
    for(int i=0; i<n; i++)
        printf("%d ",a[i]);
    printf("\n");
}

//快速排序
void QuickSort(int a[], int left, int right)
{
    //如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了
    if(left >= right)
        return ;

    int i = left;
    int j = right;
    int tmp = a[i];
    while(i < j)
    {
        //从右向左找小于基准值a[i]的元素
        while(i<j && a[j]>=tmp)
            j--;    //向前寻找
        a[i] = a[j];    //挖出此数a[j]填到前一个坑a[i]中

        //从左向右找大于基准值a[i]的元素
        while(i<j && a[i]<=tmp)
            i++;    //向后寻找
        a[j] = a[i];    //挖出此数填到前一个坑a[j]中
    }
    //将基准值填入最后的坑中
    a[i] = tmp;
    //递归调用,分治法的思想
    QuickSort(a, left, i-1);
    QuickSort(a, i+1, right);
}


//测试用例
int main()
{
    int a[] = {3,1,7,5,2,4,9,6};
    int len = sizeof(a)/sizeof(a[0]);
    QuickSort(a, 0, len);
    PrintDataArray(a, len);

    return 0;
}

 运行结果:

技术分享图片

 

排序算法——快速排序

原文:https://www.cnblogs.com/shujuxiong/p/9227252.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!