【基础算法】希尔排序-如何着手理解一个排序算法

【前言】

          最近对重拾了一下之前似懂非懂的一些基础排序算法,收获颇丰。 给大家分享一下心得。

【正文】

我现在复习算法的顺序:

         if   自认为已经理解原理:

           {

                1.尝试自己写代码,写出得不到运行结果,思考调试程序

                2.写不出,复习原理,手写排序过程

            }

        else 不理解原理,如何学习原理:

          {

                1.找网上的代码,敲出来,运行,找个对的。

                2.在纸上按程序手写每一次循环得到的结果。理解原理。

                3.按自己的理解写法改造程序, 看看哪不对, 调试学习。

           } 

package shell;

import java.util.Arrays;

/**
 * @Auther: 宋荣凯
 * @Description:
 * @Date: Created in 3:09 PM 8/3/2017
 * @Modified By:
 **/
public class shell {
    public static void  shellSortSmallTobig(int[] data)
    {
        int j =0;
        int temp=0;
        for(int increment=data.length/2; increment>=1;increment/=2)
        {
            System.out.println("increment:"+increment);
            for (int i = increment; i =0 ; j-=increment) {
                    // System.out.println("j:" + j);
                    // System.out.println("temp:" + temp);
                    // System.out.println("data[" + j + "]:" + data[j]);
                    if (temp


关于这段代码为了帮助大家思考, 我提几个问题:

   1.为什么变量j要定义在循环外?

   2.为什么data[j+increment]=temp 要写在循环外

   3.i>=1 和写i>0一样吗? 

【总结】

欢迎各位老铁评论回答。

你可能感兴趣的:(【基础算法】)