C/C++知识点之C语言排序---快速排序
小标 2018-10-10 来源 : 阅读 1557 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言排序---快速排序,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言排序---快速排序,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

/* 快速排序由C. A. R.Hoare在1962年提出,是对冒泡排序的一种改进。
*   它的基本思想是:
*   通过一趟排序将要排序的数据分割成独立的两部分
*   ,其中一部分的所有数据都比另外一部分的所有数据都要小
*   ,然后再按此方法对这两部分数据分别进*/

#include<stdio.h>
#define N 30
int QSort(int a[N],int l,int r)
{
  int m,i,j,p;

  if(l>=r)return 0;                    /*递归出口,当序列长度小于等于0时,视为排序结束*/
  i=l;j=r;
  p=a[l];                             /*取a[l]为基准元素*/
  while(i<j)
  {
    while(a[j]>=p&&j>i)            /*从a[j]往后搜索,将比基准元素p大的元素找出来*/
    j--;
    if(i<j)
    a[i]=a[j];                /*将找出来的元素放进序列左边,将序列右边挖坑*/

    while(a[i]<p&&i<j)            /*从a[i]往后搜索,将比基准元素p小的元素找出来*/
    i++;
    if(i<j)                      
    a[j]=a[i];               /*将找出来的元素放进序列右边,将序列左边挖坑*/
  }
  a[i]=p;                         /*划分结束,将标准元素填入最后一个坑*/
  QSort(a,l,j-1);                 /*递归调用,将序列分成两段*/
  QSort(a,j+1,r);
}
void main()
{
  int i,n;
  int a[N]={0};

  printf("请输入序列长度:");
  scanf("%d",&n);
  printf("请输入该序列:\n");
  for(i=0;i<n;i++)
  scanf("%d",&a[i]);

  QSort(a,0,n-1);

  printf("排序之后是:");
  for(i=0;i<n;i++)
  printf("%d ",a[i]);
  printf("\n");


}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved