目录
Arrays工具类的排序方法
//升序排序
Arrays.sort(arr);
//部分升序排序
Arrays.sort(arr,num1,num2)
//降序排序
/**
* 利用Arrays里的sort()方法排序
* 重写Comparator里的compare方法,实现降序
*/
public static void ReverseSort(){
Integer[] array = {12,3,4,356,567,32,5,56723,345};
Arrays.sort(array,new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(Arrays.toString(array));
}
冒泡排序(Bubble Sort)
将相邻的元素进行比较,如果前面的元素比后面的元素大,就把这两个元素交换位置(第一轮比较),将上述操作循环(n-1)轮(n是数组的长度)
/**
* 冒泡排序
*/
public static void BubbleSort() {
int[] array = {12,3,4,356,567,32,5,56723,345};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j + 1] < array[j]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
选择排序(Select Sort)
选出数组中最大或最小的元素,把这个元素与第一个元素互换,再找出剩余元素中最大或最小的元素,把这个元素与第二个元素互换,如此循环。
/**
* 选择排序
*/
public static void SelectSort() {
int[] array = {12,3,4,356,567,32,5,56723,345};
for (int i = 0; i < array.length - 1; i++) {
int index = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[index]) {
index = j;
}
}
int temp = array[i];
array[i] = array[index];
array[index] = temp;
}
System.out.println(Arrays.toString(array));
}
插入排序(Insert Sort)
类似于扑克牌,将手里乱序的扑克牌按照从大到小或者从小到大排序。
/**
* 插入排序
*/
public static void InsertSort() {
int[] array = {12,3,4,356,567,32,5,56723,345};
for (int i = 0; i < array.length; i++) {
//定义一个待插入的数
int insertValue = array[i];
//定义待插入数的前一个数的下标
int insertIndex = i - 1;
while (insertIndex>=0&&insertValue<array[insertIndex]){
array[insertIndex+1]=array[insertIndex];
insertIndex--;
}
array[insertIndex+1]=insertValue;
}
System.out.println(Arrays.toString(array));
}
希尔排序(Shell Sort)
属于插入排序的升级版,首先把数据集合分割成若干个小组,每一个小组分别进行插入排序。(待更新)
快速排序(Quick Sort)
(待更新)
归并排序(Merge Sort)
(待更新)
堆排序(Heap Sort)
(待更新)
计数排序(Count Sort)
(待更新)
桶排序(Bucket Sort)
(待更新)
基数排序(Raix Sort)
(待更新)