冒泡排序
从最后一个元素开始遍历,每个 元素均与后一个元素做比较,较小的排到后面,在做了几轮比较后,达到效果。
选择排序
插入排序
计数排序
计数排序, 一般维持一个数据元素最大值得下标数组,然后遍历要排序的数组,对应元素下标的元素值加1, 遍历完成后,在遍历下标数组,所有的值均是有序的了, 遍历输出即可。
代码示例:
public class CountSort {
}
快速排序
思路: 选取第一个值作为基准值, 从右边开始往左交替填坑位。
public class QuickSort {
public static void main(String[] args) {
int[] a = {3,5,2,56,23,45,12,34,1,1,1,1,1,2,2,2,2,2,2,2,2};
quickSort(a);
String disp = StringUtils.join(a, ',');
System.out.println(disp);
}
private static void quickSort(int[] array) {
sort(array, 0, array.length-1);
}
private static void sort(int[] array, int left, int right) {
if (left > right) {
return;
}
int mid = array[left];
int pos = left;
int l = left, r = right;
while (l < r) {
while (array[r] > mid && l <= r) {
r--;
}
if (l <= r) {
array[pos] = array[r];
pos = r--;
}
while (array[l] < mid && l <= r) {
l++;
}
if (l <= r) {
array[pos] = array[l];
pos = l++;
}
}
array[pos] = mid;
sort(array, left, pos-1);
sort(array, pos+1, right);
}
}
思路2: 第一个作为基准值不动, 右边与左边做交换, 交换至最后,中间的值与基准值做交换