一.排序算法
排序是在日常生活中需要经常面对的问题,价格,年龄,身高等等。而对于排序算法,又有常见的冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等等。在学习了程杰的《大话数据结构》之后,由于其是基于C语言编写,所以自己根据提供的思路基于Java语言来对各种算法实现。
二.如何测试自己所写代码的正确性
简单来说,比如一个数列{5,3,6,9,4,7},在自己设计的排序算法之后,进行简单测试之后,按递增的顺序排成了{3,4,5,6,7,9}。而如果进行大规模样本测试之后,假若出现了排序出错的情况,如上个数列排成了{4,3,5,6,7,9}。即无论规模大小,样本数量大小,排序始终都能给出正确的结果,这样代码才算是写正确了。而如何进行对自己代码进行大规模测试,就用到了对数器。
对数器
对数器的概念和使用
(1)有一个你想要测试的方法a
(2)有一个或者自己实现一个绝对正确(暂不考虑复杂度)的方法b-----比如Java语言的库中自带数列排序,它就是绝对正确的
(3)设计一个随机样本产生器(规模随机,数列元素大小随机)
(4)定义比对方法
(5)方法a与方法b对比很多次来看方法b是否正确
(6)只要有一个样本对比出错,打印出来看看,是哪里出了问题
(7)再进行大样本数量测试之后,仍然没有对比错误,自己所写排序代码就是正确的
冒泡排序
冒泡排序是最简单的排序,思路并不复杂,两两比较,先第一个元素与之后所有元素进行比较,如果比后面元素大则交换,然后第二个元素执行同样的操作,直到倒数第二个元素与最后一个元素比较完成结束。最简单的思路两个变量i,j。i从第一个遍历到倒数第二个元素,j从i+1元素开始遍历,到最后一个。代码如下:
public static void bubbleSort(int[] arr){
if(arr==null || arr.length == 1){
return;
}