一、冒泡排序
相邻的两个元素比较,大的放右边,小的放左边。
二、选择排序
从0索引开始,把每一个索引依次跟后面的索引比较,大的放后面,小的放前面
三、插入排序
将数组分为有序和无须两种,遍历数组将无须的数组插入有序的数组当中

四、快速排列
见名知意,快速排列的时间的成本非常低。本质是利用了递归算法。
- 首先,将排序范围里面中的第一个数字当作基准数,在定义两个变量start,end。
- 一定要先从end开始,从后往前找比基准数小的数,然后start从前往后找到比基准数大的数字
- 找到后交换start和end指向元素的位置,并循环这一过程,直到start和end处于一个位置,该位置是基准数在数组中应该存入的位置,再让基准数归位。
- 归位后利用递归重述以上过程。比基准数大的在右边,比基准数小的在左边。
public static void Sort(int[] arr, int i, int j) {
int start = i;
int end = j;
if (i > j) {
return;
}
int number = arr[i];
while (start != end) {
//找到比基准数小的,放在左边
while (true) {
if (start >= end || arr[end] < number) {
break;
}
end--;
}
//找到比基准数大的,放在右边
while (true) {
if (start >= end || arr[start] > number) {
break;
}
start++;
}
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
//基准数归位
int temp = arr[i];
arr[i] = arr[end];
arr[end] = temp;
//重复左边
Sort(arr, i, start - 1);
//重复右边
Sort(arr, start + 1, j);
}


1408

被折叠的 条评论
为什么被折叠?



