分治法 - 快速排序

题目描述

利用快速排序算法将读入的 N个数从小到大排序后输出,请勿使用std::sort

输入格式

第一行一个整数 n (1≤n≤105)。

第二行 n 个整数 ai (1≤ai≤109)。

输出格式

输出一行,为 ai 排序后的结果。

解题思路

先从数列中取出一个基准数,将比这个数大的数全放在它右边,小于这个数的数全放在左边,再对左右区间重复,直到每个区间只有一个数。

当left<right时,才开始。以temp为基准,temp=a[left],i=left,j=right

若a[j]>=temp,j-- ,从右往左扫描

若a[i]<=temp,i++,从左往右扫描

交换a[i]、a[j].

出循环后,再改变基准,然后对左右区间分别递归调用

完整代码及测试结果

#include<stdio.h>
void quicksort(int left,int right,int a[]){int i,j,temp,k;if(left>right){return;}temp = a[left];i = left;j = right;while(i<j){while(a[j]>=temp && i<j)j--;while(a[i]<=temp && i<j)i++;if(i<j){k = a[i];a[i] = a[j];a[j] = k;}}a[left] = a[i];a[i] = temp;quicksort(left,i-1,a);quicksort(i+1,right,a);}int main(){int a[100000];int i=0,n;scanf("%d",&n);getchar();char temp;while(i<n){scanf("%d",&a[i]);    getchar();i++;}quicksort(0,i-1,a);int j;for(j=0;j<i;j++){printf("%d ",a[j]);}return 0;
}

一组测试用例及结果

算法设计 分治法 快速排序 C语言实现相关推荐

  1. 趣学算法系列-分治法

    趣学算法系列-分治法 声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多实例分析请查看原书内容 第三章 分治 ...

  2. 从合并排序算法看“分治法”

    本文内容 分治策略 分治步骤 从合并排序看"分治策略" 分治策略 分治法(divide-and-conquer),"分治法策略"是一种很重要的算法.顾名思义,& ...

  3. python分治算法_Python算法:分治法

    本节主要介绍分治法策略,提到了树形问题的平衡性以及基于分治策略的排序算法 本节的标题写全了就是:divide the problem instance, solve subproblems recur ...

  4. python分治算法_python算法实现-分治法

    分治法概念将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题----"分" 将最后子问题可以简单的直接求解----"治" 将所有子问 ...

  5. python分治算法_分治法及其python实现例子

    在前面的排序算法学习中,归并排序和快速排序就是用的分治法,分治法作为三大算法之一的,有非常多的应用例子. 分治法概念 将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  6. chatGPT教你算法(4)——分治法

    0. 引言 在计算机科学中,分治法是一种用于解决复杂问题的常用方法.它的核心思想是将大问题分解为若干个规模较小的子问题,递归地解决这些子问题,最后再将它们的结果组合起来得到原问题的解. 本博客将向大家 ...

  7. 算法分析与设计——分治法最近点对

    分治法最近点对 分治法 分治法将一个难以直接解决的大问题划分成一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解. 一般来说,分治法的求解过程由以下三个阶段组成: 划分:把规模为 ...

  8. 算法复习——分治法重点问题

    一.众数问题 问题描述:给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该元素的重数.多重集S 中重数最大的元素称为众数.例如,S={1,2,2,2,3,5}.多重集S 的众数是2,其重 ...

  9. c语言算法设计 pdf下载,数据结构算法设计与实现指导(C语言版).pdf

    3 章 栈--实验三 3.1 实验目的及要求 1.理解特 的线性结构--顺序栈的抽象数据类型的定义,及其在 C 语言环境中的 表示方法. 2 .理解顺序栈的基本操作的算法,及其在C 语言环境中一些主要 ...

  10. python矩阵乘法分治算法_矩阵乘法的Strassen算法详解 --(算法导论分治法求矩阵)...

    1 题目描述 2 思路分析 3 解法 4 小结 1 题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 2 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数 ...

最新文章

  1. 如何确定Scrum团队的最佳规模?
  2. 面试官:为什么 HashMap 的加载因子是0.75?
  3. 《剑指offer》反转链表
  4. 最少步数----深搜
  5. 【特效】hover效果之四线动画
  6. Enterprise Library 4.1学习笔记3----安全应用程序块
  7. python语言中函数在调用前必须先定义吗_应该在python中使用函数之前进行定义?...
  8. Codeforces Round #224 (Div. 2)
  9. 批量导入手机通讯录_怎么批量导出联系人通讯录,华为手机通讯录转移如何操作?...
  10. matlab瑞利衰落信道仿真
  11. 使用 Python 进行数据清洗的完整指南
  12. 04_iTween_第三天--相机路径跟随(PutOnPath)
  13. AMD显卡怎么设置玩游戏更流畅
  14. 这7大技术博客平台,编程偏爱,程序员的你知道几个?
  15. 格力悄悄上架“大松5G手机”董明珠又杀回手机圈了?
  16. latex beamer template
  17. 手机副业哪个好?利用手机赚钱并不难
  18. 央行根据LPR调整房贷利率,看看你的房贷算法如何变化
  19. HTML5中国象棋游戏(自定义象棋难度)源码下载
  20. 分享几张个人在使用的alienware的壁纸

热门文章

  1. pycharm上传GitHub时报错:push failed: fatal: unable to access 'https://github.com/***port 443: Timed out
  2. EasyDarwin流媒体云平台:EasyCamera开源摄像机接入海康威视摄像机实时视频
  3. PDB药物综合数据库必备8大类非付费网址80个
  4. 西点军校的经典法则(转载)
  5. 中国互联网发展报告(2021)
  6. 我国计算机操作系统开发历史及现状(软件学报格式的本文WORD文档在作者主页)
  7. codesmith mysql 注释_完美解决CodeSmith无法获取MySQL表及列Description说明注释的方案...
  8. Iframe用法总结
  9. 魔兽怀旧服最新服务器人口,魔兽世界怀旧服人口普查2020年最新 最新11月怀旧服人口普查数据大全_蚕豆网新闻...
  10. md4c语言_C语言开发世嘉MD游戏【二】:Hello World