作业帮 > 数学 > 作业

设有一个线性表采用顺序存储结构,表中的数据元素值为正整数(n个).设在O(n) 时间内,将线性表分成两为两部分,其中左半

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/21 11:30:57
设有一个线性表采用顺序存储结构,表中的数据元素值为正整数(n个).设在O(n) 时间内,将线性表分成两为两部分,其中左半部分每个元素都小于原表的第一个元素,而右半部分则相反.
不知道你是否学过快速排序算法,在算法中有划分算法,实现的就是你说的这个操作.
思想是:以第一个元素为轴,开始时设置2个指针(一个在最左端【不包括第一个元素】,一个在最右端)若两个指针没有重合,从右向左扫描每个元素,若遇到比轴小的元素则记录位置并停止向左扫描,开始从左向右扫描每个元素,若遇到比轴大的元素,则记录位置并停止扫描,将两个位置的记录交换,然后再从右向左扫描,重复上述过程,直到两个指针重合.
再问: 没学过,你能给出具体的程序不
再答: #include "数据操作.h" void main() { printf("请输入数据表中关键字个数:\n"); int len; //数据表中关键字个数 scanf("%d",&len); SeqList SL; //声明数据表类型变量 if(CreateList(&SL,len)) //创建数据表 { printf("数据表创建成功,划分前关键字如下:\n"); PrintList(SL); //输出数据表 int pivot; //枢纽 pivot=(int)rand()%1000; //随机生成枢纽 printf("枢纽为:%d\n",pivot); int partionIdx=Partion(&SL,cmp,swp,1,SL.len,pivot); //划分 printf("划分位置:%d\n",partionIdx-1); //输出划分位置 printf("划分后关键字如下:\n"); PrintList(SL); //输出数据表 } else printf("数据表无元素,数据表创建失败!\n"); } #ifndef _TBOPP_H_ #define _TBOPP_H_ #include #include #include //数据表存储结构类型 //数据表中记录的关键字类型 typedef int KeyDT; //数据表记录类型 typedef struct { KeyDT key; //关键字 //为简化程序,省略其余记录项 }RecType; //数据表类型,采用定长顺序存储结构 typedef struct { RecType * List; //数据表头指针 int len ; //数据表长度 }SeqList; //声明布尔类型 typedef enum {TRUE=1,FALSE=0} BOOL; //函数声明 BOOL CreateList(SeqList * PL,int n); void PrintList(SeqList SL); int Partion(SeqList * PL,int(*cmp)(KeyDT,KeyDT),void(*swp)(KeyDT *,KeyDT *),int leftptr,int rightptr,int pivot); int cmp(KeyDT,KeyDT); void swp(KeyDT *,KeyDT *); #endif
设有一个线性表采用顺序存储结构,表中的数据元素值为正整数(n个).设在O(n) 时间内,将线性表分成两为两部分,其中左半 已知长度为n的线性表A采用顺序存储结构,请写一算法,找出该线性表中值最小的数据元素. 已知长度为n的线性表A中的元素是整数,采用顺序储存结构,删除线性表中所有值为x的数据元素. 已知长度为n的线性表A采用顺序存储结构,写一时间效率有效的算法,删除数据元素[x,y]之间的所有元素. 已知长度为n的线性表A采用顺序存储结构,请写出一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中 已知长度为n的线性表A采用链式存储结构,请写一算法使得\x05A中数据元素逆序排列,如(a,b,c,d,e,f)逆序排列 将线性表中的元素以第一个元素的key为界划分成两部分,要求排在分界元素之前的元素,其key值都比分界元素小,而排在其后的 在顺序存储结构的线性表中插入一个元素,平均需要移动( )个元素 对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为 一直长度为n的线性表A中的元素是整数,写算法删除线性表中所有值为item的数据元素. .在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移 设计一个算法,将某一个X值插入到一个有序(运用顺序存储结构),对线性表进