快速排序

简介:  #include<stdio.h> #include<stdlib.h>   void change(int *pa, int *pb)//根据地址交换两个变量的值 {     int temp = *pa;     *pa = *pb;     *pb = temp; }  


#include<stdio.h>

#include<stdlib.h>

 

void change(int *pa, int *pb)//根据地址交换两个变量的值

{

    int temp = *pa;

    *pa = *pb;

    *pb = temp;

}

 

void show(int *p, int n)//显示数组状态

{

    printf("\n此时此刻数组的状态");

    for (int i = 0; i < n; i++)

    {

        printf("%5d", p[i]);//*(p+i)

    }

}

 

void  Quicksort(int *p, int left, int right)

{

    printf("\n要处理的子序列    ");

    for (int i = left; i <= right; i++)//从左到右打印要处理子序列

    {

        printf("%5d", p[i]);

    }

 

    int i = left;//a[0] //最左边的数

    int j = right + 1;//a[10] 最右边的数

 

    if (i < j)//循环的可用条件

    {

        do

        {

            do

            {

                i++;

 

            } while (p[i]<p[left] && i <= right);//统计多少个小于它的数,p[i]就是最右边小于第一个数的数

 

            do

            {

                j--;

            } while (p[j] >= p[left] && j>left);//统计下标最左边大于第一个数的数

 

            printf("\na[%d]=%d,a[%d]=%d", i, p[i], j, p[j]);//打印中间数据

            if (i < j)

            {

                change(&p[i], &p[j]);

            }

            show(p, 10);

        } while (i < j);///j作为分割点     小于的数往左,大于的数往右

 

        change(&p[left], &p[j]);//j作为分割点

        printf("\np[%d]=%d", j, p[j]);

 

        show(p, 10);//

 

        Quicksort(p, left, j - 1);//分割左边

        Quicksort(p, j + 1, right);//分割右边

    }

}

 

void main()

{

    int a[10] = { 19, 9, 20, 8, 38, 49, 11, 58, 34, 22 };

    show(a, 10);//显示数组没有排序的状态

    Quicksort(a, 0, 10 - 1);

    show(a, 10);//显示数组没有排序的状态

 

    system("pause");

}

目录
相关文章
|
存储 移动开发 前端开发
【第35期】一文学会React-Router开发权限
【第35期】一文学会React-Router开发权限
330 0
|
机器学习/深度学习 人工智能 PyTorch
|
SQL 前端开发 JavaScript
kettle开发-超好用自定义数据处理组件
kettle开发-超好用自定义数据处理组件
473 0
|
机器学习/深度学习 人工智能 自然语言处理
|
机器学习/深度学习 数据采集 算法
利用机器学习进行股市预测:方法与挑战
【6月更文挑战第8天】本文深入探讨了机器学习在股市预测中的应用,包括常用的预测模型、数据处理方法以及面临的主要挑战。通过分析历史数据和市场趋势,机器学习技术能够提供有价值的洞察,帮助投资者做出更明智的决策。然而,股市的复杂性和不可预测性给机器学习的应用带来了诸多挑战。尽管如此,随着技术的进步和数据的丰富,机器学习在股市预测中的作用将越来越重要。
306 2
|
Python Windows
怎么将 Python 项目打包成 exe?
这篇内容是一个关于使用Python和相关工具创建GUI应用并打包成Windows安装程序的教程摘要: - **环境**:Python 3.8,Tkinter(内置GUI库),PyInstaller 6.3.0,Inno Setup Compiler(用于创建安装包)。 - **基本流程**:在conda环境中创建一个独立的虚拟环境,编写一个使用Tkinter的GUI应用,添加图标,用PyInstaller将应用打包成单个可执行文件(exe),最后用Inno Setup Compiler将exe和相关文件打包成安装程序。
371 0
|
前端开发 搜索推荐 SEO
【专栏:HTML 与 CSS 实践篇】使用 HTML 与 CSS 构建个人博客网站
【4月更文挑战第30天】本文介绍了使用HTML和CSS构建个性化个人博客网站的步骤。首先,规划设计网站主题、风格和结构;接着,利用HTML搭建首页、文章列表页和文章详情页的结构;然后,通过CSS设计整体风格、布局和交互效果;填充内容并进行SEO优化;最后,通过实际案例展示HTML和CSS的应用。构建博客网站不仅是展示自我和分享知识的平台,也是提升技能和创意实践的好机会。
354 1
|
存储 前端开发 JavaScript
使用JavaScript实现复杂功能——一个交互式音乐播放器
使用JavaScript实现复杂功能——一个交互式音乐播放器
|
机器学习/深度学习 计算机视觉 异构计算
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
483 0
【CVPR2023】Backbone FasterNet:我不允许你不知道世界上还有比ShuffleNetV2还轻量的网络!
|
编译器 图形学 开发者
Unity例子——第一人称视角的角色控制器
Unity例子——第一人称视角的角色控制器
468 0