这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
前言
编程思想中应用较为广泛的就是查找和排序算法,因其步骤简单,代码较短,又蕴含许多的经典思想,且易改造,是很多常见实现类的基础模型来源。其中快速排序、冒泡排序、归并排序等等是面试常问题目,如果这一环节没有回答好,那肯定让面试官对你的代码基础大大扣分。如何快速掌握查找和排序算法,其实一点不难,先理解后运用。一定要先理解算法的本质逻辑,然后知道它可以解决什么问题,如何解决,了解了这三步,任何排序面试题都不是难事。
冒泡排序
实现逻辑:冒泡冒泡,就是说水里的气泡一个一个往上冒,将一组无序序列排成有序,把每一个参数看出气泡,一个一个比较,并按照相同规则对比出结果。比如9、2、4、8、3、7这样一组无序序列,通过相邻两个数的两两对比,将小的往前,每次都是从后往前对比,第一次对比:3和7对比,3比7小,所以不用交换,3就是在前面;继续3和8对比,3比8小,3移到前面,得到9、2、4、3、8、7;继续3和4比较,得到9、2、3、4、8、7;继续2和3比较,不用交换;继续2和9比较,得到2、9、4、3、8、7,这样,这个序列中的最小的那个就在第一位了,然后继续从后往前比较,得到3在第二位,以此类推。
作用:将一组无序序列进行排序,成为有序序列,且时间复杂度为O(n^2)。
实现代码
public class TestDemo {
public static void testDemo(int[] res) {
if(res == null || res.length == 0)
return ;
for(int i=0; i<res.length-1; i++) {
for(int j=res.length-1; j>i; j--) {
if(res[j] < res[j-1]) {
//这块就是核心设计,对比第j位和第j-1位,如果比j-1小,那么就交换一下,通过引入第三个参数c作为中间载体进行交换。
int c = res[j-1];
res[j-1] = res[j];
res[j] = c;
}
}
}
}
}