求助 大神帮忙看看 诡异的循环终止条件

qq_30676355 qq_30676355 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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`表示无解。

秋水长天点点滴滴

易语言诡异心理游戏

例如,源码可能包含事件驱动的编程结构,利用易语言的“易模块”实现游戏功能的封装,以及各种条件判断和循环语句来控制游戏流程。

weixin_38528463

浅谈SpringMVC HandlerInterceptor诡异问题排查

本文将主要介绍如何排查SpringMVC HandlerInterceptor中的诡异问题,解决问题的思路和方法,并对相关的源代码进行分析和解释。

weixin_38659248

诡异心理游戏易语言源码-易语言

游戏循环:游戏的主循环是程序运行的核心,负责处理用户的输入、更新游戏状态和绘制画面。2. 游戏规则:源码中会定义游戏的规则,包括胜利条件、失败条件、玩家行动等。3.

weixin_38687968

Python循环底层原理与生产级避坑指南

循环是程序控制流的基础机制,其本质是状态驱动的执行模型——for循环基于迭代器协议实现惰性遍历,while循环依赖条件表达式的实时求值。理解这一原理,才能规避内存溢出、竞态条件、逻辑错乱等高频问题。技术价值在于提升代码健壮性、可维护性与性能可控性,广泛应用于数据处理、实时系统、批量任务调度等场景。本文聚焦Python中for和while的真实行为、else子句的非直觉语义、遍历中修改容器的安全模式等核心实践要点。

Nicholas Qin
评论 3
收藏 已收藏
分享
返回顶部
qq_30676355
Java 51,407 成员 86,133 内容