美文网首页
【直接插入排序】

【直接插入排序】

作者: quntion | 来源:发表于2019-02-19 16:36 被阅读0次

    概念及原理参见百度百度-直接插入排序

    C代码示例

    /**
     直接插入排序
    
     @param k 待排序数组
     @param n 数组元素个数
     */
    void insertSort(int k[], int n) {
        int i, j, temp = 0;
        
        for (i=1; i<n; i++) {
            if (k[i] < k[i-1]) {
                temp = k[i];
                // FIXME: 此处的第二表达式中如果没有 j>=0 条件,则排序结果会有问题,出现随机数进入排序数组中,排序结果错误
                for (j=i-1; j>=0 && k[j] > temp; j--) {
                    k[j+1] = k[j];
                }
                k[j+1] = temp;
            }
        }
    }
    
    // 测试
    void sortTest(void) {
    //    printf("=================开始排序测试 begin=================");
    //    int a[10] = {4, 5, 1, 2, 3, 6, 8, 10, 7, 9};
    //    bulleSort(a, 10);
    //    printf("\n=================开始排序测试 end=================\n");
        
        printf("++++++++++++++++++开始排序测试 begin++++++++++++++++++");
        
        int b[10] = {4, 5, 1, 2, 3, 6, 8, 10, 7, 9};
    //    bulleSort2(b, 10);  // 正常的两两比较冒泡排序
    //    selectSort(b, 10);
        insertSort(b, 10);
        
        printf("\n排序完成后:\n");
        for (int i = 0; i < 10; i++) {
            printf("%d ", b[i]);
        }
        
        printf("++++++++++++++++++开始排序测试 end++++++++++++++++++");
    }
    

    相关文章

      网友评论

          本文标题:【直接插入排序】

          本文链接:https://www.haomeiwen.com/subject/jgjfyqtx.html