(一)插入排序算法

2016-12-08  本文已影响8人  EldonZhao

1.直接插入排序(Straight Insert Sort)

将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增加1的有序表。即:先将第一个记录看成有序表,然后从第二个记录逐一进行插入,直至整个序列有序为止。

第一排为初始表,斜体加粗记录为有序表,有序表后加黑记录为待插入记录。

外层循环
i = 1 23 15 30 1 27 16 54 56 28 10
i = 2 15 23 30 1 27 16 54 56 28 10
i = 3 15 23 30 1 27 16 54 56 28 10
i = 4 1 15 23 30 27 16 54 56 28 10
i = 5 1 15 23 27 30 16 54 56 28 10
i = 6 1 15 16 23 27 30 54 56 28 10
i = 7 1 15 16 23 27 30 54 56 28 10
i = 8 1 15 16 23 27 30 54 56 28 10
i = 9 1 15 16 23 27 28 30 54 56 10
i = 10 1 10 15 16 23 27 28 30 54 56
    private static void StraightInsertSort(int a[], int n){
        for (int i = 1; i < n; i++)
        {
            int tmp = a[i];
            int j = i - 1;
            while(j >= 0)
            {
                if (a[j] > tmp)
                {
                    a[j+1] = a[j];
                    a[j] = tmp;
                    j--;
                }
                else break;
            }
        }
    }

2.希尔排序(Shell's Sort)

待续...

上一篇 下一篇

猜你喜欢

热点阅读