• (研)for循环的一个bug以及3个while循环的快排


    在这个for循环中,只要有一次不满足,这个for循环将break掉

    while(p->score>=90&&i<5)

      count++

    //若有一次不满足的话,那么整个循环将break;

    —————————————————————————

    ——————————————————————

    ************************************************

    #include<string.h>
    #include<stdio.h>


    void quickSort(int a[],int low,int high)
    {
    int i=low,j=high,temp=a[i]; //temp是个哨兵,每次和她进行比较
    if(i>j) return ; // 终极bug,递归结束的钟终点,不然没结果啊

    while(i<j)
    {
    while(i<j&&a[j]>=temp) j--; //是等号,相等的不用比较,加快速度
    if(i<j) a[i++]=a[j]; //注意;不是i++,j--或i j--

    while(i<j&&a[i]<=temp) i++;
    if(i<j) a[j--]=a[i]; //i这个位置要被替代的
    }
    a[i]=temp;

    quickSort(a,low,i-1); //low不是0 high不是9
    quickSort(a,j+1,high);
    }

    /*
    void quicksort(int a[],int left,int right)
    { int i=left;int j=right;int temp;

    if(i>j) return;//必须写而且是i大于j,不然函数没有输出结果


    temp=a[i];//6行代码实现那句话,大话是有等,没等号测试也正确
    while(i<j)//一共有5个i<j
    { //经典4行代码,
    while(a[j]>=temp&&j>i) j--;
    if(j>i) a[i++]=a[j];
    while(a[i]<=temp&&j>i) i++;
    if(j>i) a[j--]=a[i];
    }
    a[i]=temp;


    quicksort(a,left,i-1);
    quicksort(a,i+1,right);

    } */

    void main()
    { int k;//黑盒测试,测了很多遍正确
    int a[]={-90,-90,899999990,80,1,1,1,-99,9909999,-99}; //>= <=即使没有等号也可以成立
    quickSort(a,0,9);
    for(k=0;k<=9;k++)
    printf("%d ",a[k]);

    }

  • 相关阅读:
    上传图片2(接上一篇)
    上传图片2
    上传图片
    SQL Server基础之存储过程
    C#导入Excel、Excel导入、导入.xls 、导入.xlsx、Excel2003版本、Excel2007版本
    C#使用 System.Net.Mail发送邮件功能
    C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP
    angular模板
    从“繁”到“简”进行数组去重
    CSS强制英文、中文换行与不换行
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/6934520.html
Copyright © 2020-2023  润新知