java中排序算法的实现(三)

来源:互联网 发布:哈根纽翠斯 知乎 编辑:程序博客网 时间:2024/05/21 10:57

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/17754983

     今天继续接上次的排序算法。今天就写希尔排序在java中的一种实现方式。


/** * @param list * @param c * @Date: 2014-1-2   * @Author: lulei   * @Description: 希尔排序 */public static <T> void shellSort(List<T> list, Comparator<? super T> c) {if (list == null){return;}//初始步长设置为数组长度的一半int d = list.size() / 2;while (d >= 1) {shellSort(list, c, d);d /= 2;}}/** * @param list * @param c * @param d 步长 * @Date: 2014-1-2   * @Author: lulei   * @Description: 希尔排序中的每个分组采用直接插入排序实现 */public static <T> void shellSort(List<T> list, Comparator<? super T> c, int d) {if (list == null){return;}//插入排序实现排序for (int i = d; i < list.size(); i++) {T temp = list.get(i);int j;//将为排序的元素和已排序的序列进行比较,并移动元素位置for (j = i - d; (j >= 0) && (c.compare(list.get(j), temp) > 0); j -= d) {list.set(j + d, list.get(j));}//如果标记元素不是已排序中最大的,将标记元素插入到有序序列中if (j != (i - d)) {list.set(j + d, temp);}}}

          最近看了一下所有排序算法的思想,以及他们的时间复杂度和空间复杂度。说一点自己的理解,对于任何一种排序算法,都不会在所有情况下达到最优,每种算法都有其最优的使用情况。

0 0
原创粉丝点击