求助 大神帮忙看看 诡异的循环终止条件
package Algorithms.Sort;
import com.algs4.stdlib.StdDraw;
import java.awt.*;
import java.util.Arrays;
/**
* Created by surfacepc on 2015/10/6.
*/
public class Qucik {
private static int N = 15;
private static int left = -1;
private static int right = -1;
public static void sort(int[] a,int lo, int hi) {
if (hi <= lo) {
return;
}
int j = patition(a, lo, hi);
sort(a, lo, j - 1);
sort(a, j + 1, hi);
}
private static int patition(int []a ,int lo, int hi){
int i=lo;
int j=hi+1;
int v=a[lo];
while(true){
while(a[++i]<v){
if (i==hi){
left=i;
break;
}
}
while(a[--j]>v){
if(j==lo){
right=j;
break;
}
}
if (i>=j){
break;
}
int temp=a[i];
a[i]=a[j];
a[j]=temp;
StdDraw.show(1000);
StdDraw.clear();
for (int m = 0; m < N; m++) {
if (m == left || m == right) {
StdDraw.setPenColor(Color.GREEN);
StdDraw.line(m, 0, m, a[m]);
} else {
StdDraw.setPenColor(Color.red);
StdDraw.line(m, 0, m, a[m]);
}
}
StdDraw.show(0);
}
left=lo;
right=j;
int temp=a[lo];
a[lo]=a[j];
a[j]=temp;
StdDraw.show(1000);
StdDraw.clear();
for (int m = 0; m < N; m++) {
if (m == left || m == right) {
StdDraw.setPenColor(Color.BLUE);
StdDraw.line(m, 0, m, a[m]);
} else {
StdDraw.setPenColor(Color.red);
StdDraw.line(m, 0, m, a[m]);
}
}
StdDraw.show(0);
return j;
}
public static void main(String[] args) {
StdDraw.setCanvasSize(2000, 1200);
StdDraw.setXscale(0, N);
StdDraw.setYscale(0, N);
StdDraw.setPenRadius(0.02);
StdDraw.line(0, 0, N, 0);
int [] array=new int [N];
for (int i = 0; i <N ; i++) {
array[i]=(int)(Math.random()*N);
}
sort(array,0,N-1);
System.out.println(Arrays.toString(array));
}
}
红色标记部分,我完全搞不懂,如果去了这个边界条件,算法就失效了
...全文
相关推荐
杭电1180解题报告 诡异的楼梯
- **循环**:当队列非空时,取出队首元素进行处理,并将符合条件的相邻节点加入队列。- **终止条件**:如果遇到终点,则输出步数并结束程序;如果队列为空但仍未找到终点,则输出`-1`表示无解。
易语言诡异心理游戏
例如,源码可能包含事件驱动的编程结构,利用易语言的“易模块”实现游戏功能的封装,以及各种条件判断和循环语句来控制游戏流程。
浅谈SpringMVC HandlerInterceptor诡异问题排查
本文将主要介绍如何排查SpringMVC HandlerInterceptor中的诡异问题,解决问题的思路和方法,并对相关的源代码进行分析和解释。
诡异心理游戏易语言源码-易语言
游戏循环:游戏的主循环是程序运行的核心,负责处理用户的输入、更新游戏状态和绘制画面。2. 游戏规则:源码中会定义游戏的规则,包括胜利条件、失败条件、玩家行动等。3.
Python循环底层原理与生产级避坑指南
循环是程序控制流的基础机制,其本质是状态驱动的执行模型——for循环基于迭代器协议实现惰性遍历,while循环依赖条件表达式的实时求值。理解这一原理,才能规避内存溢出、竞态条件、逻辑错乱等高频问题。技术价值在于提升代码健壮性、可维护性与性能可控性,广泛应用于数据处理、实时系统、批量任务调度等场景。本文聚焦Python中for和while的真实行为、else子句的非直觉语义、遍历中修改容器的安全模式等核心实践要点。


