用C语言实现快速排序算法「建议收藏」

用C语言实现快速排序算法「建议收藏」一、快速排序算法(Quicksort)1.定义快速排序由C.A.R.Hoare在1962年提出。快速排序是对冒泡排序的一种改进,采用了一种分治的策略。2.基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。3….

大家好,又见面了,我是你们的朋友全栈君。

一、快速排序算法(Quicksort)

1. 定义

快速排序由C. A. R. Hoare在1962年提出。快速排序是对冒泡排序的一种改进,采用了一种分治的策略。

用C语言实现快速排序算法「建议收藏」

2. 基本思想

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

3. 步骤

a. 先从数列中取出一个数作为基准数。

b. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

c. 再对左右区间重复第二步,直到各区间只有一个数。

二、C语言实现代码(仅供参考)

 

/*****************************************************
File name:Quicksort
Author:Zhengqijun    Version:1.0    Date: 2016/11/04
Description: 对数组进行快速排序
Funcion List: 实现快速排序算法
*****************************************************/

#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 10

/**************************************************
 *函数名:display
 *作用:打印数组元素
 *参数:array - 打印的数组,maxlen - 数组元素个数
 *返回值:无
 **************************************************/
void display(int array[], int maxlen)
{
    int i;

    for(i = 0; i < maxlen; i++)
    {
        printf("%-3d", array[i]);
    }
    printf("\n");

    return ;
}

/************************************
 *函数名:QuickSort
 *作用:快速排序算法
 *参数:
 *返回值:无
 ************************************/
void QuickSort(int *arr, int low, int high)
{
    if (low < high)
    {
        int i = low;
        int j = high;
        int k = arr[low];
        while (i < j)
        {
            while(i < j && arr[j] >= k)     // 从右向左找第一个小于k的数
            {
                j--;
            }

            if(i < j)
            {
                arr[i++] = arr[j];
            }

            while(i < j && arr[i] < k)      // 从左向右找第一个大于等于k的数
            {
                i++;
            }

            if(i < j)
            {
                arr[j--] = arr[i];
            }
        }

        arr[i] = k;

        // 递归调用
        QuickSort(arr, low, i - 1);     // 排序k左边
        QuickSort(arr, i + 1, high);    // 排序k右边
    }
}

// 主函数
int main()
{
    int array[BUF_SIZE] = {12,85,25,16,34,23,49,95,17,61};
    int maxlen = BUF_SIZE;
    
    printf("排序前的数组\n");
    display(array, maxlen);
    
    QuickSort(array, 0, maxlen-1);  // 快速排序
    
    printf("排序后的数组\n");
    display(array, maxlen);
    
    return 0;
}

 

执行程序后的结果如下所示:

用C语言实现快速排序算法「建议收藏」

上诉代码结合了我自己对快速排序的看法和理解,仅供参考。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153027.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件工程第1次作业[通俗易懂]

    软件工程第1次作业[通俗易懂]软件工程第1次作业

    2022年4月21日
    38
  • Redis很牛逼很秀!轻松实现实时订阅推送

    Redis很牛逼很秀!轻松实现实时订阅推送

    2022年2月13日
    54
  • VS无法打开源文件

    VS无法打开源文件通过一天的时间终于弄出来了,无法找到源文件的主要原因其实就是你删了某一个文件夹,他找不到了。这是我查这么多最贴合实际的一次,其他的调的,可能也可以解决,不过会有其他问题产生,无法打开元文件。搞了半天还是不行,主要是没有从根本上下手。推荐一个链接,解决这个问题:解决无法打开源文件…

    2022年6月15日
    47
  • 离线浏览器Teleport Pro完全教程

    离线浏览器Teleport Pro完全教程书城导航  首页>电脑书籍>文件管理>离线浏览器TeleportPro完全教程(一) 

    2025年10月8日
    3
  • mt4支持python么_py-mt4

    mt4支持python么_py-mt4py-mt4用Python来写MT4的自动化交易脚本????原理使用MQL4原生库调用ZERO-MQ作为消息服务端使用其它语言,如Python作为客户端调用接口安装教程克隆代码下来关闭杀毒软件!!!解压MT4配置文件.rar把Include的东西放到MT4的Include文件夹下把Library/X86/的东西放到MT4的Library文件夹下把ZeroMQ_MT4_EA_Template_Edite…

    2022年5月8日
    47
  • hive中操作hdfs命令

    hive中操作hdfs命令版本:Hadoop2.7.4–查看dfs帮助信息[root@hadp-mastersbin]#dfsUsage:dfs[genericoptions][-appendToFile…][-cat[-ignoreCrc]…][-checksum…][-chgrp[-R]GROUPPATH…][-chmod[-R]<MODE[,MODE]…|OCTALMODE>PATH…][-chown[-R][OWNER][:[GROUP]]PA

    2022年9月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号