读书人

奇偶排序有关问题

发布时间: 2012-01-14 20:02:35 作者: rapoo

奇偶排序问题
奇偶排序的思路是在数组中重复两趟扫描。第一趟扫描所有的数据项对,a[j]和a[j+1],j是奇数(j = 1,3,5……)。如果它们的关键字的次序颠倒,就交换它们。第二趟扫描所有的偶数数据项进行同样的操作(j = 2,4,6……)。重复进行这样的两趟的排序直到数组全部有序。

public void sort(int[] n){
for (int i = 0; i < n.length; i += 2){
for (int j = 0; j < n.length - 1; j += 2){
if (n[j] > n[j + 1]){
n[j] = n[j + 1] + n[j]; ???
n[j + 1] = n[j] - n[j + 1]; ???
n[j] = n[j] - n[j + 1]; ???这些是什么意思~~!
}
}
for (int j = 1; j < n.length - 1; j += 2){
if (n[j] > n[j + 1]){
n[j] = n[j + 1] + n[j];
n[j + 1] = n[j] - n[j + 1];
n[j] = n[j] - n[j + 1];
}
}
}
}
这个是我在网上看到的, 但是我实在想不通是怎么实现的, if (n[j] > n[j + 1])
这个j+1 是n[j]的下一个元素吗~,如 .2 , 5, 3 , 8 , 15,j=3, j+1 是不是等于四啊,第4个元素.那些加啊减啊是什么意思,能不能讲一下,举个例子~~十分感谢`

------解决方案--------------------


用不着这么麻烦的
[解决办法]
其中的加减就是实现了不用第三个元素的换位,例x=3,y=4,不用第三个变量把x变成4 y变成3 y=x+y; x=y-x; y=y-x;
[解决办法]
mark

读书人网 >J2SE开发

热点推荐