交换排序
以交换位置的方式排序
冒泡排序
原理:把最大的换到最后一位,然后把第一大的换到倒数第二位
public static void bubbleSort(int[] args) {
int len = args.length;
while (len > 0) {
for (int i = 0; i < len - 1; i++) {
int next = i + 1;
if (args[i] > args[next]) {
int temp = args[next];
args[next] = args[i];
args[i] = temp;
}
}
len--;
}
}
快速排序
原理:从数列中取出一个值,将比这个值大的放在它的右边,将比这个值小的放在它的左边,再最左右两个区域重复这个过程,直到各个区域只有一个数。
public void quickSort(int[] target, int left, int right) {
if (left >= right) {
return;
}
int pivot = target[left];// 基准点
int lo = left;
int hi = right;
while (lo < hi) {
while (target[hi] >= pivot && lo < hi) {
hi--;
}
//把右边受阴元素和左边换
target[lo] = target[hi];
while (target[lo] <= pivot && lo < hi) {
lo++;
}
//把左边受阴元素和右边换
target[hi] = target[lo];
}
//把拿出来的元素放回去
target[lo] = pivot;
quickSort(target, left, lo - 1);
quickSort(target, lo + 1, right);