[color=red]这个排序算法效率比较低,但是比前面那种容易理解![/color]
package com.wlh;
public class QuickSort {
public static void qucikpass(int[] r, int left, int right) {
int i, j;
int middle,temp;
i = left;
j = right;
middle = r[i];
while (i < j) {
//从右向左找小于middle的数组值
while (r[j] >= middle && i < j)
j--;
//i和j没有碰到一起
if (i < j) {
//从右向左找到小于middle的数组值,然后r[i],r[j]位置上的数组值交换
temp=r[i];
r[i] = r[j];
r[j]=temp;
i++;
//从左向右找大于middle的数组值
while (r[i] <= middle && i < j)
i++;
if (i < j) {
//从左向右找大于middle的数组值,然后r[i],r[j]位置上的数组值交换
temp=r[i];
r[i] = r[j];
r[j]=temp;
j--;
}
}
}
//递归调用次函数,对r[i]左边的数组进行排序
if (left < i) {
qucikpass(r, 0, i);
}
//递归调用次函数,对r[i]右边的数组进行排序
if (right > j) {
qucikpass(r, j +1, right);
}
}
public static void main(String[] args) {
//int[] pData = new int[] { 35, 40, 45, 10, 15 };
int[] pData = new int[10];
for (int i = 0; i < 10; i++){
pData[i] = (int) (Math.random() * 100);
System.out.print(pData[i] + " ");
}
System.out.println("\n======================== ");
QuickSort3.qucikpass(pData, 0, pData.length - 1);
for (int i = 0; i < pData.length; i++)
System.out.print(pData[i] + " ");
}
}