在学习快速排序算法的时候我发现老师给的示例代码中是用的swap(aaa, i++, j)和swap(aaa, i, j--)。我有些迷惑i++和j--,我写成swap(aaa,i, j)运行出来的结果还是一样的呀。所以想求助一下大佬能不能帮我解释一下swap(aaa, i++, j)和swap(aaa, i, j--)里的i++和j--是什么作用
代码如下:
package test;
public class QuickSortDC {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int a[] = {49, 38, 65, 97, 76, 13, 27};
QuickSortDC.printArray(a);
QuickSortDC.quickSort(a, 0, 6);
QuickSortDC.printArray(a);
}
public static void quickSort(int[] aa, int low, int high) {
if (low < high) {
int pivotpos = QuickSortDC.partitionOnePass(aa, low, high, low); //划分序列
QuickSortDC.quickSort(aa, low, pivotpos-1); //对左区间递归排序
QuickSortDC.quickSort(aa, pivotpos+1, high); //对右区间递归排序
}
}
public static int partitionOnePass(int[] aaa, int low, int high, int pivotIndex) {
int i = low, j = high, pivot = aaa[pivotIndex];
while(i < j) {
while((i < j) && (aaa[j] >= pivot))
j --;
if(i < j)
QuickSortDC.swap(aaa, i++, j);
while((i < j) && (aaa[i] <= pivot))
i ++;
if(i < j)
QuickSortDC.swap(aaa, i, j--);
}
return j;
}
public static void swap(int[] aaaa, int i, int j) {
int iTemp = aaaa[i];
aaaa[i] = aaaa[j];
aaaa[j] = iTemp;
}
public static void printArray(int a5[]) {
System.out.println();
for(int i = 0; i < a5.length; i ++)
System.out.print("\t" + a5[i]);
System.out.println();
}
}
swap(aaa, i++, j);
相当于
swap(aaa, i, j);
i++;