排序--快速排序(附程序流程图)

这篇具有很好参考价值的文章主要介绍了排序--快速排序(附程序流程图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

概述

算法思路

大致步骤

过程图解

程序流程图

完整代码


概述

快速排序是对冒泡排序的一种改进。其核心思想是分治法,分而治之。最优时间复杂度是O(nlogn)。最坏时间复杂度是O(n^2)

算法思路

       先从数列中取出一个基准数(一般情况下我们取左边第一个数),通过一趟排序将要排序的数列划分为独立的两个部分,要求是一趟排序完成后,基准数的左边的数都小于基准数,基准数的右边的数都大于基准数。然后按照此方法对这两部分数列分别进行快速排序,整个排序过程用递归进行,直至整个数变成有序数列。

大致步骤

  1. 从数列中取出一个数作为基准数;
  2. 把所有小于基准数的全部挪到左边,把所有大于基准数的挪到右边;
  3. 对基准数左右两部分分别重复步骤(1)和(2)。

过程图解

快速排序算法流程图,排序算法,数据结构,算法,c语言,流程图

程序流程图

快速排序算法流程图,排序算法,数据结构,算法,c语言,流程图

注:变量pos为基准数文章来源地址https://www.toymoban.com/news/detail-520307.html

完整代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void qSort(int left,int right,int *arr) {
	if (left >= right) return;
	int i = left;
	int j = right;
	int pos = arr[i];        //确定基准数pos

	while (i<j) {

		while (i < j && arr[j] >= pos)
			j--;
		arr[i] = arr[j];
		while (i < j && arr[i] <= pos)
			i++;
		arr[j] = arr[i];

	}

	arr[i] = pos;

	qSort(left,i-1,arr);
	qSort(i+1,right,arr);
}

int main() {

	int i = 0;
	int sz = 0;
	int arr[50] = { 0 };
	do {

		scanf("%d",&arr[i++]);
		sz++;                    //sz作用:统计数列的个数

	} while (getchar()!='\n');

	qSort(0,sz-1,arr);


	for (int i = 0; i < sz;i++) {

		printf("%d ",arr[i]);

	}

	return 0;
}

到了这里,关于排序--快速排序(附程序流程图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 流程图如何制作?5步快速画出好看的流程图!

    流程图是一种图形化工具,描述某个过程或者操作的步骤,以及某种业务系统的具体流程。流程图通常由各种图形符号、形状、箭头组成,可以清晰的表示出流程或系统中各种步骤、每个环节之间的关系、条件判断、数据的流动和处理过程等。           对于负责策划的职场

    2024年02月14日
    浏览(46)
  • ChatGPT - 快速生成 流程图

    好的,作为一名经验丰富的技术管理人员,我可以帮您梳理一个研发标准化的完整流程,包括需求分析、概要设计、代码走查等等,输出的节点不少于18个,包含逻辑判断的分支,以下是详细内容。 研发标准化的完整流程如上所示,包含18个节点,分别是: 需求分析 需求评审

    2024年02月06日
    浏览(44)
  • 提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

    流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代,AI技术的出现已经彻底改变了制作流程图的方式。 在本文中,我们将与各位分享 8款好用的AI流程图软件 ,借助每款软件内置的AI能力,可以快速绘制出一份完整的流程图,以简化和增强你的绘图体验。

    2024年02月03日
    浏览(58)
  • 算法练习-赎金信(思路+流程图+代码)

            难度:中等         分类:哈希表         难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨在督促自己认真学习。         给你

    2024年02月22日
    浏览(45)
  • 算法练习-替换数字(思路+流程图+代码)

            难度:简单         分类:字符串         难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。         给定一个字符串S,它包含小写字母和数字字符,请编写一个函数,将字符串

    2024年02月20日
    浏览(46)
  • [C语言]描述算法的工具——流程图

    大家好,我是壮!这篇文章讲述一下描述算法的工具——流程图。我会以一个简单的程序(判断闰年),来给大家介绍三个方法,分别是传统流程图、结构化流程图和伪代码。 举例程序 1.1介绍 传统流程图,简称流程图。它是用一些图框来表示各种操作。用图形表示算法,直

    2024年02月13日
    浏览(43)
  • 算法练习-右旋字符串(思路+流程图+代码)

            难度:简单         分类:字符串         难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。         字符串的【右旋转】操作是把字符串尾部的若干个字符转移到字符串的前

    2024年01月22日
    浏览(40)
  • 算法练习-长度最小的子数组(思路+流程图+代码)

            难度:简单         分类:数组         难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。         给定一个含有个正整数的数组和一个正整数s,找出该数组中满足其和

    2024年01月18日
    浏览(41)
  • 程序员必备的10张流程图

    随着互联网的发展,现在有越来越多的人想成为程序员。 如果你想成为程序员你可以先问自己这几个问题? •你是一个逻辑和抽象思维能力比较强的人吗? •你是否愿意不断地去学习那些新的东西,并且在大多数时间内你都需要去自学。 •当你遇到一些问题和困难的时候,

    2024年02月07日
    浏览(52)
  • BP神经网络算法基本原理,BP神经网络算法流程图

    由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大差距。 NNT是Matlab中较为重要的一个工具箱,在实际应用中,BP网络用的最广泛。 神经网络具有综合能力强,对数据的要求不高,适时学

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包