• (研)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]);

    }

  • 相关阅读:
    React Native Android打包apk
    React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现
    使用react native制作的微博客户端
    Shell 脚本中 '$' 符号的多种用法
    Shell编程 | 脚本参数与交互及常见问题
    Shell编程-条件测试 | 基础篇
    Shell编程-控制结构 | 基础篇
    Python运维中20个常用的库和模块
    20款开发运维必备的顶级工具
    Linux 系统结构详解
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/6934520.html
Copyright © 2020-2023  润新知