快速排序
使用java实现快速排序
public static void quickSort(int[] arr, int l, int r) {
if (l >= r) {
return;
}
int lift = l;
int right = r;
//选取比较的值,取需要排序的序列的第一个数作为基值
int p = arr[l];
//将比p大的放到右边,将比p小的放到左边
while (l < r) {
while (l < r && arr[r] >= p) {
r--;
}
if (l < r) {
arr[l] = arr[r];
}
//将这个比p小的放到左边
while (l < r && arr[l] <= p) {
l++;
}
if (l < r) {
arr[r] = arr[l];
}
if (l >= r) {
arr[l] = p;
}
}
quickSort(arr, lift, l - 1);
quickSort(arr, l + 1, right);
}
如上快速排序的思想是,选取第一个数作为基准数,将比这个数大的数放到右边,将比这个数小的放到左边,这样就能将数分成两个子序列,并在子序列中继续挑选一个数,最终会成为一个从小到大的数组。
public static void quickSort(int[] arr, int l, int r) {
if (l >= r) {
return;
}
int lift = l;
int right = r;
//选取比较的值,取需要排序的序列的第一个数作为基值
int p = arr[l];
//将比p大的放到右边,将比p小的放到左边
while (l < r) {
while (l < r && arr[r] <= p) {
r--;
}
if (l < r) {
arr[l] = arr[r];
}
//将这个比p小的放到左边
while (l < r && arr[l] >= p) {
l++;
}
if (l < r) {
arr[r] = arr[l];
}
if (l >= r) {
arr[l] = p;
}
}
quickSort(arr, lift, l - 1);
quickSort(arr, l + 1, right);
}
改变两个排序即可将数组变成从大到小排序
标签:arr,int,quickSort,放到,while,排序,快速 From: https://www.cnblogs.com/sparrowzg/p/17744059.html