c++快速排序算法

题目描述

利用快速排序算法将读入的NN个数从小到大排序后输出。

快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)

输入输出格式

输入格式:

第11行为一个正整数NN,第22行包含NN个空格隔开的正整数a_ia**i,为你需要进行排序的数,数据保证了A_iA**i不超过10000000001000000000。

输出格式:

将给定的NN个数从小到大输出,数之间空格隔开,行末换行且无空格。

输入输出样例

输入样例#1:

5
4 2 4 5 1

输出样例#1:

1 2 4 4 5

代码及注释

#include <iostream>
using namespace std;
void qsort(int, int);
int a[101];
int change(int,int);
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n;i ++)//输入
{
cin >> a[i];
}
qsort(1, n);
for (int i = 1; i <= n;i ++)//输出
{
cout << a[i] << " ";
}
// cout << endl;
// return 0;
}
void qsort(int l,int r)
{
int mid, p;// mid是中间值
int j, i;//i是左边 j是右边
i = l;
j = r;
mid = a[(l + r) / 2];//取中间的一个数
do
{
while (a[i] < mid)//如果指的数大于中间就停
{
i++;
}
while (a[j] > mid)//如果指的数小于中间就停
{
j--;
}
if (i <= j)//如果i在左边; j在右边
{
if (a[i] != a[j])//交换
{
p = a[i];
a[i] = a[j];
a[j] = p;
}
i++;//各自移动
j--;
}
} while (i <= j);
if (l < j)//排中间值左边的
qsort(l, j);
if (i < r)//排中间值右边的
qsort(i, r);
}
/*
9
3 5 8 1 2 9 4 7 6
*/

STL代码

虽然题目上不允许用STL

但是

我还是用了

上代码

#include <iostream>
#include <algorithm>//STL库函数
using namespace std;
int main()
{
int arrays[100];
int n;
cin >> n;
for (int i = 1;i <= n;i ++)
{
cin >> arrays[i];
}
sort(arrays,arrays + n + 1);//STL排序函数
for (int i = 1;i <= n;i ++)
{
cout << arrays[i] << " ";
}
cout << endl;
return 0;
}

算法视频

c++快速排序算法的更多相关文章

  1. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

  2. C# 集合扩展快速排序算法

    /// <summary> /// 对集合进行排序,如 /// List<Person> users=new List<Person>(){.......} /// ...

  3. PHP描述冒泡排序和快速排序算法

    使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...

  4. 快速排序算法(Java)

    快速排序算法的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. class Parti ...

  5. 快速排序算法-C语言实现

    注:本篇内容为翻译,之所以选择这篇进行翻译原因是该文章含有动画,能够更加直观地展示快速排序.同时,可以仔细看一下代码,代码中把结构化的思想给予了更加充分地表现.按照功能进行模块划分的思想得到了彻底地贯 ...

  6. C#快速排序算法基础入门篇

    相信算法对于许多开发人员来说都是一大难点,之所以难,就像设计模式一样,许多人在阅读之后,没有很好地理解,也不愿意动手上机操作,只停留在理论的学习上面,随着时间推移就慢慢淡忘. 有些东西,你可以发明创造 ...

  7. 快速排序算法 Quick sort

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4046189.html 首先随机选择一个轴,并调整数组内各个数字,使得比轴值大的数在轴的右边, ...

  8. PHP实现快速排序算法

    快速排序(Quick Sort)是对冒泡排序的一种改进,属不稳定排序算法,由东尼·霍尔在1962年提出.快速排序基本步骤:从数列中挑出一个元素(一般称为称为“基准”),通过一趟排序将要排序的数据分割成 ...

  9. Java快速排序算法

    快速排序算法思想: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一 ...

  10. 排序系列 之 快速排序算法 —— Java实现

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

随机推荐

  1. sql like N'%...%' 在C#里的写法

    StringBuilder sb = new StringBuilder(); List<SqlParameter> parameters =new List<SqlParamete ...

  2. 【C++】int转string,double转string方法,string转int,string转double方法

    C++的格式比较多比较复杂,转换起来有很多方法,我这里只提供一种,仅供参考. int或double转string 使用字符串流的方式可以比较简单的完成转换 需要添加头文件 #include <s ...

  3. MVC 组件之间的关系

    View和Controller都可以直接请求Model 但是Model不依赖View和controller lController可以直接请求View来显示具体页面 View不依赖Controller ...

  4. Expression Blend学习四控件

    原文:Expression Blend学习四控件 Expression Blend制作自定义按钮 1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点 ...

  5. Android 查看Apk签名方式V1和V2

    Android 查看Apk签名方式V1和V2 java -jar apksigner.jar verify -v my.apk -- Verifies Verified using v1 scheme ...

  6. 零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里

    原文:零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里 前面几章连续讲到ListBox的运用,本章要讲得是如何简单的把Sa ...

  7. 毕设(一)C#的百度api调用

    这个学期就要毕业了,选了一个无人机地面站软件设计的题目,这几天也开始着手做, 首先做了一个百度地图的调用,这里因为是上位机的开发,所有就不介绍Javascript的 调用方法,核心是用到一个类Http ...

  8. Delphi与Windows 7下的用户账户控制(UAC)机制(有可能需要取消enable runtime themes)

    WIN7/WIN8/WIN10, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改.对于Delphi程序的影响,UAC主要在于以下几点:1.由于UAC机制,Delphi对于系统 ...

  9. TCanvas 类属性及方法

    delphi TCanvas类 类关系   TObject-> TPersistent   对那些作图对象,可使用TCanvas对象作为画布.标准的window控件,例如编辑控件和列表框控件,当 ...

  10. 30+简约和平铺的WordPress复古主题

    现在复古风格的设计非常流行,你可以快速建立属于自己的复古风格的网站.继续阅读下去,我们将展示给你一些精彩的WordPress复古主题. 多年来,网页设计师们纷纷用3D效果,纹理,噪声,渐变的灯光效果, ...