[Javran][Code]QuickSort(Java)
javran吧
全部回复
仅看楼主
level 5
javran 楼主
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
1