level 5
import java.util.*;class QuickSort { static int d[]=new int[100]; public static void main(String[] args) throws java.io.IOException { int n; int i,j; Scanner s = new Scanner(System.in); n=s.nextInt(); for (i=0;i
>1]; int tmp; do { while (d[i]
x) j--; if (i<=j) { tmp=d[i]; d[i]=d[j]; d[j]=tmp; i++; j--; } } while (!(i>j)); if (l
2007年08月28日 12点08分
1
level 0
public static void quickSort(int[] arry) {quickSort(arry, 0, arry.length - 1);}public static void quickSort(int[] arry, int low, int high) {if (low >= high)return;if (1 == (high - low)) {if (arry[low] > arry[high]) {swap(arry, low, high);}return;}int splitKey = arry[low];int scanUp = low + 1;int scanDown = high;while (true) {// 往上扫描,直到遇到 小于 分割数字 的数字while (arry[scanUp] <= splitKey && scanUp < high) {scanUp++;}// 往下扫描,直到遇到 大于 分割数字 的数字while (arry[scanDown] >= splitKey && scanDown > low) {scanDown--;}// 如果两边扫描的下标交错,表示没有找到交换数字,退出循环if (scanDown <= scanUp)break;// swapswap(arry, scanUp, scanDown);scanUp++; // 下一个scanDown--; // 下一个}// 将分割数字放到scanDown的位置arry[low] = arry[scanDown];arry[scanDown] = splitKey;quickSort(arry, low, scanDown - 1);quickSort(arry, scanDown + 1, high);}// 交换数字的两个数public static void swap(int[] arry, int fromIdx, int toIdx) {// 异或法arry[fromIdx] ^= arry[toIdx];arry[toIdx] ^= arry[fromIdx];arry[fromIdx] ^= arry[toIdx];}
2007年11月15日 08点11分
2