利用快排的思想将其左右成两分块,使指针在两端切换
并且要先判断指针是否在指定范围内,再才能判断大小,要不然很容易越界
public class Main {
public static int a[] = {2,21,2,13,1,13,22,1313,13,2};
public static void main(String[] args) {
for(int i = 0; i < 10; i ++) {
System.out.print(a[i] + " ");
}
System.out.println();
System.out.println(a.length);
Sort(0,9);
for(int i = 0; i < 10; i ++) {
System.out.print(a[i] + " ");
}
}
private static void Sort(int i, int j) {
int ti = i, tj = j;
int t = a[0];
while(ti < tj) {
while(ti < tj && a[tj] % 2 == 0) {
tj --;
}
if(ti < tj) {
a[ti] = a[tj];
ti ++;
}
while(ti < tj && a[ti] % 2 == 1) {
ti ++;
}
if(ti < tj) {
a[tj] = a[ti];
tj --;
}
}
a[ti] = t;
}
}
总结:
对与在不停变化,却任然在使用的数据要时刻小心她是否在指定范围内,要不然就很容易出错
就像深搜,如果在变化,却要使用的是它的原数,那么就要回溯一样