为何会想到写排序呢?是因为上课的时候老师半开玩笑的说到,现在面试很多人排序算法都写不出来的。又问了我们能有多少人在不查阅资料的情况下可以写呢?确实,懂和动手还是有点区别的。所以我们在学习中还是不要眼高手低,踏踏实实的做大概是最好的。
一、冒泡排序
说的简单点,就是从前往后比较相邻的两个数,大的往下沉,小的往上漂。
参考代码:
private static void bubbleSort(int[] a) {//冒泡排序
int temp = 0;
for(int i = a.length - 1; i > 0; i --){//下标从最好一个开始做 冒泡 大的往下 理解 小的往上
for(int j = 0; j < i; j++){
if(a[j+ 1] < a[j]){//升序排列
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}
二、插入排序
就和我们打扑克牌抓牌一样,习惯性的按照顺序进行排列,新抓的一张牌(新的一个数)会和手中的牌进行比较,从而插在合适的位置。
参考代码:
private static void insertSort(int[] a) {//插入排序
int temp = 0;
int j;
for(int i = 1; i < a.length; i ++){
temp = a [i];
for(j = i; j > 0 && a[j - 1] > temp ; j --){
a[j] = a[j - 1];
}
a[j] = temp;
}
System.out.println(Arrays.toString(a));
}
三、选择排序
对于给定的一组数,经过第一轮比较后有一个最小的值,与第一个数交换;然后在除第一个数外的剩余数中找最小值,一次不断进行着,直到结束。
参考代码:
private static void SelectSort(int[] a) {//选择排序
for(int i = 0; i < a.length; i ++){
int min = i;
int temp = a[i];
for(int j = i + 1; j < a.length; j++){
if(a[j] < temp){//升序排列
temp = a[j];
min = j;
}
}
if(min != i){
a[min] = a[i];
a[i] = temp;
}
}
System.out.println(Arrays.toString(a));
}
结果截图(将三个放在一起进行截图的):
之前因为放假(回老家没有网
),加上自己个人一些原因导致没有更新,在这里说一声不好意思。
这篇就先介绍这几个排序算法。如果您觉得有什么改进的地方或者发现错误,请指出,谢谢!