解决方案 »
- 很简单的OO问题,请提供下思路。
- JAVA中十进制的UNICODE如何转换成中文或者中文转换成十进制的UNICODE
- 一个算法题,关于倒计时
- Arrays.sort(String[] a, Comparator<? super String> c)实现手法是什么?
- 把一个字符串中所有的"\"都替换成"/" 该怎么解决?
- 200分在线等待:java下如何备份和恢复access数据库?
- 迷惑ing,关于邮件发送客户端的设计,再线
- 有什么工具可以把java 的class文件压成一个可以直接执行的win32可执行程序
- 一个小问题
- 誰能說清楚private protected 和 friendly 訪問控制范圍的區別?
- listFiles的用法
- 多线程并发访问全局变量引起空指针问题
就是
int n = 1;
do {
n *= 2;
if (odd == 0) odd = 1 else odd = 0;
} while (n < count);
也就是判断n中(二进制形式)有偶数个1还是奇数个1。
所以它本身是一个循环。你的格式有迷惑性。下面的if不属于这个循环。
我是在想 这是为 什么时候的情况
当odd为偶数时 数组被复制 为奇数时就不复制
就好像是复制与不复制都是一样的 因为后面要被覆盖
但作者不应该是 仅仅为了 时而为偶数 则复制
odd因count的值而变
这么做更效率还是什么
这个代码是java.util.DualPivotQuicksort中的片段
所以不理解 他应该是为 某种情况而存在 或是心情好?
我是在想 这是为 什么时候的情况
当odd为偶数时 数组被复制 为奇数时就不复制
就好像是复制与不复制都是一样的 因为后面要被覆盖
但作者不应该是 仅仅为了 时而为偶数 则复制
odd因count的值而变
这么做更效率还是什么
这个代码是java.util.DualPivotQuicksort中的片段
所以不理解 他应该是为 某种情况而存在 或是心情好?
还是我理解错误了。。
public class QuictSortTest {
public static void main(String...args){
int[] arr=new int[]{23,4,5,6,23,45};
quickSort(arr,0,arr.length-1);
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+"\t");
}
public static void quickSort(int[] a,int low,int high){
if(low>=high)
return;
if(low<=high){
int middle=partition(a,low,high);
quickSort(a,low,middle-1);
quickSort(a,middle+1,high);
}
} private static int partition(int[] a, int low, int high) {
if(low>=high)
return 0;
int p=a[low];
int i=low,j=high;
while(i<j){
while(i<=j&&i<a.length&&a[i]<=p){
if(i<high)
i++;
else
break;
}
while(i<=j&&a[j]>=p)
j--;
swap(a,i,j);
if(i==j)
break; //当情况是9,8,6,5这种的时候
}
swap(a,i,j);
swap(a,low,j);
return j;
}
private static void swap(int[] a,int i, int j) {
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
但也许你是指某些时候的情况需要
快速排序种类很多啊 。。
能不能加个好友QQ以后一起编程啊
我的qq号是353003874