【王道数据结构编程题】- 查找数值为x的元素 + 循环左移p个位置

目录

1.王道代码题:线性表(a1,a2,a3,...,an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法,完成用最少的时间在表中查找数值为x的元素,若找到,则将其与后继元素位置相互交换,若没有找到,则将其插入表中并使表中元素仍递增有序。

2.王道代码题:【2010统考真题】设将n(n>1)个整数存放到一维数组R中。设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0


其他-王道数据结构算法题-顺序表题,如下

顺序表-删除最小值元素+元素逆置

顺序表-删除所有值为x的数据元素+删除值在给定值s与t之间所有元素

顺序表-删除值在给定值之间元素+删除值重复元素

顺序表-两个有序顺序表合并+两个顺序表位置互换

顺序表-找出两个序列A和B的中位数+找出序列A的主元素

顺序表-找出未出现的最小正整数+三元组最小距离

1.王道代码题:线性表(a1,a2,a3,...,an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法,完成用最少的时间在表中查找数值为x的元素,若找到,则将其与后继元素位置相互交换,若没有找到,则将其插入表中并使表中元素仍递增有序。

代码实现:

//折半查找
#include
using namespace std;
int a[10]={1,2,3,4,5,6,7,8,9};
int n=9;
void findd(int a[],int x)
{
    int left,right,mid;
    left=0,right=n-1;
    while(left<=right)
    {
       mid=(left+right)/2;
       if(a[mid]==x) break;
       else if(a[mid]>x) right=mid-1;
       else left=mid+1;
    }
    if(a[mid]==x&&mid!=n-1)
    {
        int t=a[mid];
        a[mid]=a[mid+1];
        a[mid+1]=t;
    }
    if(rightright;i--)
        {
            a[i+1]=a[i];
        }
        a[i+1]=x;
    }
}
int main()
{
	int i;
    for(i=0;i<9;i++) cout<

找到,其与后继元素位置互换

【王道数据结构编程题】- 查找数值为x的元素 + 循环左移p个位置_第1张图片

int a[10]={1,2,3,4,5,7,8,9,10};
int main()
{
	int i;
    for(i=0;i<9;i++) cout<

没找到,则将其值插入表中 ,表仍然递增有序。

【王道数据结构编程题】- 查找数值为x的元素 + 循环左移p个位置_第2张图片

2.王道代码题:【2010统考真题】设将n(n>1)个整数存放到一维数组R中。设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0

代码实现:

//循环左移
#include
using namespace std;

int a[7]={1,2,3,4,5,6,7};
int n=7;
void reverse(int a[],int l,int r)
{
    for(int i=l;i<=(l+r)/2;i++)
    {
        int t=a[i];
        a[i]=a[(l+r)-i];
        a[(l+r)-i]=t;
    }
}
void prin(int a[])
{
    for(int i=0;i

循环左移3

【王道数据结构编程题】- 查找数值为x的元素 + 循环左移p个位置_第3张图片

循环左移6

int main()
{
    cout<<"一开始数组"<

【王道数据结构编程题】- 查找数值为x的元素 + 循环左移p个位置_第4张图片

你可能感兴趣的:(数据结构与算法,c++,算法,数据结构)