一、为什么要使用排序?
排序有什么用?想象一下,如果字典不是按照字母顺序排列,查找一个单词,你得查到什么时候?这就是为什么人们引入了分类的概念,因为其极大地帮助我们快速搜索物品。
二、三大基本排序介绍
1.冒泡排序
冒泡排序可以理解成在水里的泡泡,越大的泡泡浮力越大,也就是不断使得我们无序数组中的最大数向前移动,经历n轮循环逐渐将每一个数推向最前。
实现代码:
private static void test(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
boolean b = true;
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j+1]){
b=false;
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp;
}
}
if (b) break;
}
}
2.插入排序
插入排序其实就跟我们打牌是一样的,我们在摸牌的时候,牌堆是乱序的,但是我们一张一张摸到手中进行排序,使得它变成了有序的!
实现代码:
private static void test(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
int j = i - 1;
while (j >= 0 && temp < arr[j]) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
3.选择排序
选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序。
private static void test(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int min = arr[i],pos = i;
for (int j = i+1; j < arr.length; j++) {
if (arr[j] < min){
min = arr[j];
pos = j;
}
}
int temp = arr[i];
arr[i] = arr[pos];
arr[pos] = temp;
}
}