线性表应用--根据首元素大小移动其他元素到相应位置
来源:互联网 发布:在centos上安装ms8.0 编辑:程序博客网 时间:2024/06/14 03:55
/*程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014 年 9 月 11 日*版本号:v1.0*对任务及求解方法的描述部分:*问题描述:线性顺序表的简单应用(移动)*程序输入:*程序输出:*问题分析:有一个顺序表,设计一个算法,以第一个 元素为分界线,将所有小鱼等于它的元素 移到该元素前,大于它的元素移到该元素 后面。*算法设计:解法1: 用一个pivot存放L->data[0],用i,j分别指 向顺序表第一个和最后一个元素,当i<j时循 环:从右向左扫描找到一个小于等于piovt的 data[j],再从左往右扫描,找到一个大于piovt 的元素data[i],两者进行交换.循环结束时 data[0]和data[j]交换. 解法2: 将L->data[0]存放到piovt中,用i从左往右查找, j从右往左查找.当i不等于j时循环,指向同一元 素为止:从右往左扫描,找到一小于piovt的data[j] 覆盖data[i],再从左往右扫描,找到一个大于piovt 的data[i]替换data[j].最后让data[i]=piovt.*/#include<iostream>#include<cstdlib>using namespace std;const int MaxSize=50; //顺序表中最多元素个数typedef struct{int data[MaxSize]; //存放顺序表中元素int length; //存放顺序表长度}SqList;void CreateList(SqList *L,int a[],int n);//建立顺序表void DisplayList(SqList *L); //输出线性表void move_1(SqList *L); //移动函数1void move_2(SqList *L); //移动函数2void CreateList(SqList *L,int a[],int n){ for(int i=0;i<n;i++) L->data[i]=a[i]; L->length=n;}void DisplayList(SqList *L){for(int i=0;i<L->length;i++)cout<<L->data[i]<<" "; //遍历输出cout<<endl;}void move_1(SqList *L){ int i=0,j=L->length-1,pivot=L->data[0],temp; while(i<j) { while(i<j&&L->data[j]>pivot) j--; //从右侧扫描,找到一个小于等于pivot的值 while(i<j&&L->data[i]<=pivot) i++; //从左侧扫描,找到一个大于pivot的值 if(i<j) //满足条件,两者交换 { temp=L->data[i]; L->data[i]=L->data[j]; L->data[j]=temp; } } temp=L->data[0]; //L->data[0]和L->data[j]交换 L->data[0]=L->data[j]; L->data[j]=temp;}void move_2(SqList *L){ int i=0,j=L->length-1,pivot=L->data[0]; while(i<j) { while(j>i&&L->data[j]>pivot) j--; //找到一个小于等于piovt的值 L->data[i]=L->data[j]; i++; while(i<j&&L->data[i]<=pivot) i++; //找到一个大于piovt的值 L->data[j]=L->data[i]; j--; } L->data[i]=pivot;}int main(){ SqList L; int n; cout<<"请输入顺序表元素个数及元素:"<<endl; cin>>n; int *array=new int[n]; for(int i=0;i<n;i++) cin>>array[i]; CreateList(&L,array,n); cout<<"线性表中的元素为:"<<endl; DisplayList(&L); cout<<"使用第一种解法移动后线性表中的元素为:"<<endl; move_1(&L); DisplayList(&L); cout<<"使用第二种解法移动后线性表中的元素为:"<<endl; move_2(&L); DisplayList(&L); return 0;}
运行结果:
0 0
- 线性表应用--根据首元素大小移动其他元素到相应位置
- JS移动某些元素到指定位置
- jquery移动元素位置
- 根据当前元素获取其他元素
- 双向链表的应用—实现根据使用频率安排元素位置的功能
- 根据窗口大小自动调整元素大小
- 顺序表应用:元素位置互换1
- PHP next()移动数组内部指针到下一个元素的位置,并返回该元素 prev()
- 删除线性表指定位置的元素(单链表实现)
- 移动端自由移动元素位置
- 3.1 Javascript:探索客户端-设置网页元素根据窗口比例调整位置与大小
- 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置
- (Javascript经典案例) -- 捕获鼠标点击位置并将元素移动到该位置
- 【代码笔记】【c#】将数组的某一索引位置的元素移动到指定索引位置
- java数组中根据元素查找位置
- 线性表--删除元素
- 元素内容根据div大小自动换行
- JS_页面大小及元素的位置
- codeforces 126B
- Linux如何查找一个文件
- UVA 1619 - Feel Good(dp 求区间最小值 附加RMQ)(区间最小值优化)
- 数据库系统原理——关系模式
- 程序员生存定律(PDF版)
- 线性表应用--根据首元素大小移动其他元素到相应位置
- mysql自查大全
- 状态码详解
- Android中内容观察者的使用---- ContentObserver类详解
- hdu1226 超级密码
- 敏捷开发
- python统计xml节点
- 编程珠玑答案-Chapter3
- hdu 1520 Anniversary party