各种排序算法的实现-5(表插入排序-2)
2013-12-29 01:10
197 查看
主要实现 表从小到大 按顺序整理:
#define SIZE 8 typedef struct { int data; int next; }s_node; typedef struct { s_node r[SIZE + 1]; }list_type; void TB_sort(list_type & list) { list.r[0].next = 1; list.r[1].next = 0; //初始状态 int p, q; for (int i = 2; i <= SIZE; i++) { p = list.r[0].next; q = 0; while (p > 0 && list.r[p].data <= list.r[i].data) { q = p; p = list.r[p].next; } list.r[q].next = i; list.r[i].next = p; } } void arrange(list_type & list) { int p = list.r[0].next; int temp; for (int i = 1; i<= SIZE; i++) { while (p < i) p = list.r[p].next; //找到没有排好序的 第一个出来 temp = list.r[p].next; if (p != i) { std::swap(list.r[p], list.r[i]); list.r[i].next = p; } p = temp; } } int main(int argc, char* argv[]) { s_node node[SIZE + 1]; node[0].data = 0;//这个节点用作哨兵节点 node[1].data = 23; node[2].data = 324; node[3].data = 23; node[4].data = 333; node[5].data = 98; node[6].data = -1; node[7].data = 45; node[8].data = -345; list_type list; memcpy(list.r, node, sizeof(s_node) * (SIZE + 1)); TB_sort(list); int temp = list.r[0].next; for (int i = 1; i<=SIZE; i++ ) { printf("%d ", list.r[temp].data); temp = list.r[temp].next; } arrange(list); printf("\n"); for (i = 0; i<SIZE; i++) { printf("%d ", list.r[i + 1]); } system("pause"); return 0; }
相关文章推荐
- 各种排序算法的实现-4(表插入排序-1)
- 各种排序算法的实现-3(2路插入排序)
- Java实现的各种排序算法(插入排序、选择排序算法、冒泡排序算法)
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 各种排序算法总结(C++实现)
- 各种排序算法的分析及java实现 - 残剑_ - 博客园
- java各种排序算法及实现
- 常用的各种排序算法的JAVA实现
- 各种排序算法的分析及java实现
- 各种排序算法的分析及java实现
- 各种排序算法的分析及java实现
- 各种排序算法的分析及java实现
- 用Python实现基本排序算法03——插入排序
- 各种排序算法的实现及其比较
- 各种排序算法的分析及java实现
- js实现各种排序算法
- JAVA实现排序算法(一):选择排序与插入排序
- 各种排序算法的分析及其Java代码的实现
- 各种排序算法的C++实现