if和while的区别

packageday13;importjava.util.Arrays;/***用java实现一个快速排序**/publicclassQuickSortDemo{publ... package day13;

import java.util.Arrays;

/**
* 用java实现一个快速排序
*
*/

public class QuickSortDemo {
public static void main(String[] args) {
int[] ary = { 30, 10, 20, 30,50,80,30,40};
// quickSort(ary);
quickSort(ary, 0, ary.length-1);
System.out.println(Arrays.toString(ary));
// int id = partition(ary, 0, ary.length-1);
// System.out.println(Arrays.toString(ary)+"id:"+id);

}

public static void quickSort(int[] ary, int lower, int high) {
int pivot;
*************************************************************
10行 if(lower < high){
*********************************************
pivot = partition(ary, lower, high);
System.out.println(pivot);
quickSort(ary, lower, pivot - 1);
quickSort(ary, pivot+1, high);
}
}

// 找出中枢值、将比中枢值大的放在右边、比中枢值小的放在左边
// 50,30,80,50,30,20,10,80,60
public static int partition(int[] ary, int lower, int high) {
int pivot = ary[lower];
while (lower < high) {
while (lower < high && ary[high] >= pivot)
high--;
swap(ary, high, lower);
while (lower < high && ary[lower] <= pivot)
lower++;
swap(ary, high, lower);
}
return lower;
}

private static void swap(int[] ary, int high, int lower) {
int temp;
temp = ary[high];
ary[high] = ary[lower];
ary[lower] = temp;
}

}
这是我写的一个快速排序程序、上面的第10行、我开始使用的是while、但是怎么运行都是一个死循环、搞了半天、最后改成if就正确、我想这两个应该同样的道理呀!while在条件不成立时候也是跳出循环呀!为啥while就是死循环呢?求解??
展开
 我来答
dandanfeng166
2014-03-09 · TA获得超过779个赞
知道小有建树答主
回答量:196
采纳率:37%
帮助的人:85万
展开全部
虽然二者都有条件判断,但是while是用来做循环的,也就是说只要条件满足,就会执行一次循环体,执行完以后会再判断一次条件,如果满足条件,还会再执行一次,终而复始,除非你在循环中对条件进行了改变才会从循环中跳出来。
而if只做一次判断,条件不满足就不执行,满足就执行一次,执行完就往下执行,不会再回过头来继续执行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式