zoukankan      html  css  js  c++  java
  • 快速排序。。。注意快速排序不适宜解决有重复数据的排序

     1 #include<stdio.h>  /*快速排序是的思想就是每一趟让标记右边的大于或小于标记位置的数,而且是让每一次的标记位置为空让标记位置l或g与i或h交换*/
    2 int qsort2(int a[],int l,int h)
    3 {
    4 int key,i;
    5 key = a[l]; /*取轴值记录关键字*/
    6 while(l<h) /*从表的两端交替地向中间扫描,无等于号!!!!*/
    7 {
    8 while(l<h && key <= a[h])h--; /*将比轴值记录大的交换到高端*/
    9 a[l] = a[h]; //此时l为空;
    10 while(l<h && key >= a[l])l++;//注意等于号!!!!
    11 a[h] = a[l]; //此时h为空
    12 }
    13 a[l] = key; //由于最后l==h所以lhuoh都为空,需加上值/*轴值(支点)记录到位*/
    14 return l; /*返回轴值(支点)记录所在位置*/
    15 }
    16 void qsort(int a[],int l,int h)//分成两个字串,使其每一个字串都达到左右大于或等于为止
    17 {
    18 int k;
    19 if(l<h)
    20 {
    21 k = qsort2(a,l,h); /*将待排序序列一分为二*/
    22 qsort(a,l,k-1); //k处的位置已经确定无需变动/*对小于轴值序列实现递归排序*/
    23
    24
    25 qsort(a,k+1,h);
    26
    27 }
    28
    29 }
    30 void main()
    31 {
    32 int a[100];
    33 int i,n;
    34 while(scanf("%d",&n)&&n)
    35 {
    36 for(i=0;i<n;i++)
    37 {
    38 scanf("%d",&a[i]);
    39 }
    40 qsort(a,0,n-1);
    41 for(i=0;i<n;i++)
    42 {
    43 printf("%d ",a[i]);
    44 }
    45
    46 }
    47 }
    48
  • 相关阅读:
    微信小程序之跨界面传参
    微信小程序简易教程
    css动画与js动画的区别
    不同浏览器兼容性的区别
    Filter学习
    FileDescriptor
    Executor框架
    Struts1的处理流程
    Struts1的实现原理
    [转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2364041.html
Copyright © 2011-2022 走看看