表插入排序
来源:互联网 发布:淘宝无线端店铺活动 编辑:程序博客网 时间:2024/05/29 15:36
TableInsertSort.c
#include <stdio.h>#include <stdlib.h>#include <limits.h>typedef struct//data struction{int data;int next;}Node, *NodePtr;static NodePtr nodePtr = NULL;static int *iArrayTemp = NULL; static int iArrayLen;void alloc(){if((nodePtr = (NodePtr) malloc(iArrayLen * sizeof(Node))) == NULL){fprintf(stderr, "allocate error !");exit(1);}}void init(){int i;nodePtr[0].data = INT_MAX;nodePtr[0].next = 1;nodePtr[1].data = iArrayTemp[0];nodePtr[1].next = 0;//printf("%d,", nodePtr[1].data);for(i = 2; i < iArrayLen + 1; i++){nodePtr[i].data = iArrayTemp[i - 1];//printf("%d,", nodePtr[i].data);}//printf("\n");}void TabInsertSort(int iList[], int iLen){int i;int iCurrentPtr;int iForePtr;int iFlag = 0;iArrayTemp = iList;iArrayLen = iLen;alloc();//allocate spaceinit();for(i = 2; i < iArrayLen + 1; i++)//start from the second one {iCurrentPtr = nodePtr[0].next;//pointer point to the firstiForePtr = 0;while(1){//printf("nodePtr[%d].data:%d : ", iCurrentPtr, nodePtr[iCurrentPtr].data);//printf("nodePtr[%d].data:%d\n", i, nodePtr[i].data);if(nodePtr[iCurrentPtr].data > nodePtr[i].data){nodePtr[i].next = iCurrentPtr;nodePtr[iForePtr].next = i;if(iFlag == 1){break;}else{nodePtr[0].next = i;iFlag = 0;break;}}else if(nodePtr[iCurrentPtr].data < nodePtr[i].data){iFlag = 1;if(nodePtr[iCurrentPtr].next != 0){iCurrentPtr = nodePtr[iCurrentPtr].next;//change iCurrentPtr for moving the next oneiForePtr = nodePtr[iForePtr].next;}else{nodePtr[i].next = 0;nodePtr[iCurrentPtr].next = i;break;}}}}iCurrentPtr = nodePtr[0].next;for(i = 0; i < iArrayLen; i++){iList[i] = nodePtr[iCurrentPtr].data;iCurrentPtr = nodePtr[iCurrentPtr].next;}}main.c
#include <stdio.h>int iList[] = {34, 23, 4, 87, 11, 12, 15, 43, 92};int main(void){void TabInsertSort(int iList[], int iLen);int iLen = sizeof(iList) / sizeof(iList[0]);int i;TabInsertSort(iList, iLen);//printf("iLen = %d\n", iLen);for(i = 0; i < iLen; i++){printf(i == iLen - 1 ? "%d\n" : "%d,", iList[i]);}return 0;}
- 插入排序:表插入
- 插入排序之表插入
- 插入排序:表折半插入
- 排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
- 1.4插入排序-表插入排序
- 数据结构-插入排序-表插入排序
- 插入排序:直接插入排序 二分法插入排序 表插入排序 Shell排序
- //插入排序 直接插入排序 二分插入排序 2-路插入排序 表插入排序 希尔排序
- 表插入排序
- 表插入排序
- 链表插入排序
- 链表插入排序
- 表插入排序
- 表插入排序
- 链表插入排序
- 链表插入排序
- 表插入排序
- 链表插入排序
- 各平台宏
- 没有小数位的货币在数据库中的保存(不理解,测试)
- C++标准库的string类型与C 风格的字符串的相互转换
- makefile语法简介
- 关于打开或关闭Windows功能呈现空白的问题
- 表插入排序
- 清除C盘系统垃圾和缓存的批处理bat文件
- 基于贪心算法的几类区间覆盖问题
- LINUX系统目录详解
- 希尔排序 一个简单示例
- [Python入门及进阶笔记]Python-基础-集合小结
- hdu3530 Subsequence
- 关于Hibernate查询MySQL得出数据不同步问题
- 设计模式大结局