(研)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\n",a[k]);

}

posted on 2017-06-02 17:54  多情剑客无情剑;  阅读(579)  评论(0编辑  收藏  举报

导航