排序之插入排序(直接插入、折半插入、希尔排序)
发布日期:2021-05-14 13:58:42 浏览次数:20 分类:精选文章

本文共 5639 字,大约阅读时间需要 18 分钟。

���������������������������������������������������������������������������

������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������

#include 
int main() {
int List[] = {49, 38, 65, 97, 76, 13, 27, 30, 55, 4};
int i, t, j, length;
length = sizeof(List) / sizeof(int);
for (i = 1; i < length; ++i) {
if (List[i] < List[i-1]) {
int temp = List[i];
for (j = i; j-- > 0; --j) {
if (List[j] > temp) {
List[j + 1] = List[j];
} else {
List[j + 1] = temp;
temp = List[j];
}
}
List[j + 1] = temp;
}
}
return 0;
}

������������

  • ���������������������������������������������������������������default���������������������������������
  • ������������������������������������������������������������������������������������������������������������������
  • ���������������������������������������������������������������������������������������������������������������������������������������������������
  • ������������������������������������������������������������������������������������
  • ���������������

    ������

    • ������������������������������O(n)���������������O(n��)���
    • ������������������O(1)������������������������������

    ������

    • ������������������������������������������������������������������������������������

    ������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������O(n��)������������������������������������������������������

    ������������

  • ���������������������������������������������
  • ���������������������������������������������������������������������������������
  • ���������������������������������������������������������������������
  • ���������������������������������������������
  • ������������

    #include 
    int main() {
    int List[] = {0, 49, 38, 65, 97, 76, 13, 27, 30, 55, 4};
    int i, j, low, high, mid;
    int t, length;
    length = sizeof(List) / sizeof(int);
    printf("%d\n", length);
    for (i = 2; i < length; ++i) { // ������������������������
    int temp = List[i];
    low = 0;
    high = mid;
    mid = (low + high) / 2;
    while (low <= high) {
    if (List[0] < List[mid]) {
    // ������������������������������������������������������
    low = mid + 1;
    } else {
    // ������������������������������������������
    high = mid - 1;
    }
    }
    // ������������������������������������������������������
    for (j = i-1; j > high; --j) {
    List[j+1] = List[j];
    }
    List[high+1] = temp;
    mid = (low + high) / 2;
    Radio until������������������������
    }
    return 0;
    }

    ���������������

    ������

    • ������������������������������������������������������������������������

    ������

    • ������������������������O(1)���
    • ������������������������������������O(n��)���

    ���������������������Shell Sort���

    ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    ������������

  • ���������������������������������������������������������group size���������������������������������������
  • ���������������������������������������������������������������
  • ������������������������������������������������������������������������������������������������������
  • ������������

    #include 
    int main() {
    int i, j, gap, t, length;
    int List[] = {49, 38, 65, 97, 76, 13, 27, 30, 55, 4};
    length = sizeof(List) / sizeof(int);
    gap = length;
    while (gap <= 1) {
    for (i = 0; i < gap; ++i) {
    for (j = i + gap; j < length; j += gap) {
    if (List[j] < List[j - gap]) {
    int temp = List[j];
    int k = j - gap;
    while (k >= 0 && List[k] > temp) {
    List[k + gap] = List[k];
    k -= gap;
    }
    List[k + gap] = temp;
    }
    }
    }
    gap /= 2;
    }
    }

    ���������������

    ������

    • ������������������������������O(n log n)���
    • ������������������O(1)���

    ������

    • ���������������O(n��)������������������������������

    ������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/���������������������������

    上一篇:迭代器
    下一篇:最短路径之Dijkstra(迪杰斯特拉)算法(无向图)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月12日 06时47分47秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章