今天针对之前一段时间学习的《数据结构与算法之美》进行掌握程度的考试。
考试内容就是分别将冒泡排序、选择排序、插入排序、归并排序和快速排序的程序算法,写出具体的代码。
针对这场考试,有以下几点总结:
冒泡排序的程序在效率方面还有改进的空间;
对于选择排序的理解出现偏差;
对于归并排序看似理解,实际上没有真正理解;
没有时间去进行快速排序的考试。
冒泡排序的程序在效率方面还有改进的空间
冒泡排序这个功能的实现是,遍历整个数组,然后在遍历过程中不断进行前后数据的对比,如果前面的数据大于后面的数据,则进行交换。遍历完成整个数组则排序完成。
而效率能够提升的地方在于,如果在某一次遍历的过程中,没有进行数据交换,则说明排序已经完成,可以不用后续的遍历。
对于选择排序的理解出现偏差
选择排序我理解的是,将需要排序的数组分成排序区和非排序区,然后不断遍历非排序区中的数据,找到最小的数据并暂存起来,然后以最小的数据的下标作为数据搬移点之前的数据都向后数据搬移一位,然后将最小的数据放到排序区的最后一位,不断这个过程直到非排序区没有数据为止。
而真正的选择排序是,将需要排序的数组分成排序区和非排序区,然后不断遍历非排序区中的数据,找到最小的数据,然后将最小的数据和排序区的最后一位进行数据交换,不断这个过程直到非排序区没有数据为止。
对于归并排序看似理解,实际上没有真正理解
对于归并排序,写出了大致思想,但是具体实现并没有写出来,甚至不知道怎么去写。
没有时间去进行快速排序的考试
在归并排序完成归并排序的考试完成之后,发现时间已经不够去写快速排序的算法了,发现考试没有虽然没有时间限制,但是如果想要一次性将考试内容全部过一遍,需要考虑每次考试可能花费的时间。