Java手写快速排序

    科技2025-10-15  12

    public class QuickSort { public static void main(String[] args) { int data[]={45,28,80,90,50,16,100,10}; int n=data.length-1; qSort(data,0,n); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } } public static void qSort(int data[], int left, int right) { int base = data[left]; // 就是我们的基准数,取序列的第一个,不能用data[0] int ll = left; // 表示的是从左边找的位置 int rr = right; // 表示从右边开始找的位置 while (ll < rr) { // 从后面往前找比基准数小的数 while (ll < rr && data[rr] >= base) { rr--; } if (ll < rr) { // 表示是找到有比之大的 int temp = data[rr]; data[rr] = data[ll]; data[ll] = temp; ll++; } while (ll < rr && data[ll] <= base) { ll++; } if (ll < rr) { int temp = data[rr]; data[rr] = data[ll]; data[ll] = temp; rr--; } } // 肯定是递归 分成了三部分,左右继续快排,注意要加条件不然递归就栈溢出了 if (left < ll) qSort(data, left, ll - 1); if (ll < right) qSort(data, ll + 1, right); } }

    Processed: 0.021, SQL: 8